什么是 C# 中带有事件和句柄的 visual basic 的等价物
what is the equivalent of visual basic withevents and handles in C#
我尝试将 Visual Basic (VB) 项目转换为 C#,但我不知道如何更改下面的一些代码,
在 windows 表单中,一个字段和一个 Timer 对象定义如下;
Public WithEvents tim As New Timer
...
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tim.Tick
End Sub
...
如何在 C# 中重写此行?
在 C# 中,您通过使用 +=
运算符向事件注册方法委托来注册 EventHandler
,如下所示:
public Timer tim = new Timer();
tim.Tick += Timer1_Tick;
private void Timer1_Tick(object sender, EventArgs e)
{
// Event handling code here
}
之所以有效,是因为 Timer
class 的 Tick
事件实现了 Event
,如下所示:
public event EventHandler Tick
和 EventHandler
是一个带有签名的方法委托:
public delegate void EventHandler(
Object sender,
EventArgs e
)
这就是为什么任何符合 EventHandler
签名的方法都可以用作处理程序的原因。
我尝试将 Visual Basic (VB) 项目转换为 C#,但我不知道如何更改下面的一些代码,
在 windows 表单中,一个字段和一个 Timer 对象定义如下;
Public WithEvents tim As New Timer
...
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tim.Tick
End Sub
...
如何在 C# 中重写此行?
在 C# 中,您通过使用 +=
运算符向事件注册方法委托来注册 EventHandler
,如下所示:
public Timer tim = new Timer();
tim.Tick += Timer1_Tick;
private void Timer1_Tick(object sender, EventArgs e)
{
// Event handling code here
}
之所以有效,是因为 Timer
class 的 Tick
事件实现了 Event
,如下所示:
public event EventHandler Tick
和 EventHandler
是一个带有签名的方法委托:
public delegate void EventHandler(
Object sender,
EventArgs e
)
这就是为什么任何符合 EventHandler
签名的方法都可以用作处理程序的原因。