C# public event EventHandler
时间: 2024-06-14 20:08:10 浏览: 19
在C#中,public event EventHandler是一种事件的声明方式。事件是一种特殊的委托,用于在程序中实现发布-订阅模式,允许对象在特定条件下通知其他对象发生的事件。
EventHandler是一个预定义的委托类型,它可以用于处理不带参数的事件。它的定义如下:
```
public delegate void EventHandler(object sender, EventArgs e);
```
在声明事件时,可以使用EventHandler委托类型作为事件的类型。例如:
```
public event EventHandler MyEvent;
```
这样就声明了一个名为MyEvent的事件,它的类型是EventHandler。其他对象可以通过订阅这个事件来接收通知,当事件发生时,所有订阅了该事件的对象都会执行相应的处理方法。
事件的触发通常通过调用事件的触发器来实现。在类中,可以使用以下方式触发事件:
```
protected virtual void OnMyEvent(EventArgs e)
{
MyEvent?.Invoke(this, e);
}
```
这里使用了OnMyEvent方法来触发MyEvent事件,并传递一个EventArgs参数。通过调用MyEvent委托的Invoke方法,可以通知所有订阅了该事件的对象。
需要注意的是,事件的访问修饰符一般为public或protected,以便其他对象能够订阅该事件。
相关问题
C#中eventhandler
在C#中,EventHandler是一个委托类型,用于处理事件。它是一个泛型委托,可以接受不同类型的参数。通常,EventHandler用于定义事件的处理程序。
以下是两个关于C#中EventHandler的例子:
1. 使用字符串作为参数的EventHandler:
```csharp
public class Headmaster
{
public event EventHandler<string> ActHandler;
public void Come()
{
Console.WriteLine("校长来了");
ActHandler?.Invoke(null, "王校长");
}
}
```
2. 使用自定义参数类作为参数的EventHandler:
```csharp
public class HeadArgs : EventArgs
{
public string Name { get; set; }
public int MedalCount { get; set; }
}
public class Headmaster
{
public event EventHandler ActHandler;
public void Come()
{
Console.WriteLine("校长来了");
HeadArgs args = new HeadArgs() { Name = "王校长", MedalCount = 10 };
ActHandler?.Invoke(null, args);
}
}
```
c# eventhandler用法
C#中的EventHandler是一种委托类型,它可以用于处理事件。当事件被触发时,与之相关联的EventHandler将被调用。以下是使用EventHandler的示例:
1. 定义一个委托EventHandler,并将方法Cancel委托给它,然后调用委托执行:
```csharp
public delegate void EventHandler(bool cancel);
public event EventHandler WindowTryClose;
// 委托方法
private void Cancel(bool cancel)
{
// 取消关闭窗口
}
// 调用委托
WindowTryClose?.Invoke(false);
```
2. 定义一个Button类,使用EventHandler处理按钮点击事件:
```csharp
public class Button
{
public EventHandler ClickEvent;
// 触发点击事件
public void ClickAction()
{
ClickEvent?.Invoke(this, new EventArgs());
}
}
// 使用Button类
Button button = new Button();
button.ClickEvent += Button_Click;
button.ClickAction();
// 处理点击事件的方法
public void Button_Click(Object sender, EventArgs args)
{
// 处理按钮点击事件
}
```