2015-07-29 1 views
1

Я пытаюсь преобразовать проект Visual Basic (VB) на C#, и я понятия не имею, как изменить некоторые из кодов ниже,, что является эквивалентом Visual Basic WithEvents и ручки в C#

Через окна образуют поле и объект 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#?

+1

Если вы переписываете это в новый проект winforms C#, у вас есть окно дизайнера, просто добавьте новый таймер и дважды щелкните его. – Sayse

+0

Нет прямого эквивалента для WithEvents в C#. Он полагается на магию компилятора в компиляторе VB.NET, которого нет у компилятора C#. Сначала конвертируйте код VB.NET, чтобы вместо этого использовать оператор AddHandler, тогда вам будет очень легко преобразовать его в C#, машина может это сделать. –

ответ

1

В C# вы регистрируете обработчик событий, зарегистрировав метод делегата с событием, используя оператор «+ =» следующим образом:

public Timer tim = new Timer(); 
tim.Tick += Timer1_Tick; 

private void Timer1_Tick(object sender, EventArgs e) 
{ 
    // Event handling code here 
} 

Это работает, потому что событие Tick класса Timer реализует событие как следующим образом:

public event EventHandler Tick 

и EventHandler является метод делегата с подписью:

public delegate void EventHandler(
    Object sender, 
    EventArgs e 
) 

, поэтому любой метод, который соответствует сигнатуре EventHandler, может использоваться как обработчик.

Смежные вопросы