Пожалуйста, руководство по C# эквивалент материала VB.NET (новичок в vb.net)
Может ли кто-нибудь поделиться со мной эквивалентом приведенного ниже кода в vb.net.
public class Class1 : ComboBox
{
public event ItemCheckEventHandler ItemCheck;
public class f
{
private Class1 c;
public f(Class1 c1)
{
c = c1;
c.ItemCheck += c_ItemCheck;
}
void c_ItemCheck(object sender, ItemCheckEventArgs e)
{
c.ItemCheck(sender, e);
}
}
}
Сильфон представляет собой эквивалент (преобразованный код):
Public Class Class1
Inherits ComboBox
Public Event ItemCheck As ItemCheckEventHandler
Public Class f
Private c As Class1
Public Sub New(c1 As Class1)
c = c1
AddHandler c.ItemCheck, AddressOf c_ItemCheck
End Sub
Private Sub c_ItemCheck(sender As Object, e As ItemCheckEventArgs)
RaiseEvent c.ItemCheck(sender, e)
End Sub
End Class
End Class
Проблема: C# работает нормально, но в преобразованном коде RaiseEvent
Заявление дает следующие ошибки:
- с не событие app.f
- Ожидается конец заявления
любой может поделиться со мной правильным синтаксисом.
Спасибо
2 ответа
Решение
Странно, что VB не допускает этого напрямую, но вы можете сделать это, добавив метод во внешний класс для вызова события:
Public Class Class1
Inherits ComboBox
Public Event ItemCheck As ItemCheckEventHandler
Public Sub RaiseItemCheckEvent(ByVal sender As Object, ByVal e As ItemCheckEventArgs)
RaiseEvent ItemCheck(sender, e)
End Sub
Public Class f
Private c As Class1
Public Sub New(ByVal c1 As Class1)
c = c1
AddHandler c.ItemCheck, AddressOf c_ItemCheck
End Sub
Private Sub c_ItemCheck(ByVal sender As Object, ByVal e As ItemCheckEventArgs)
c.RaiseItemCheckEvent(sender, e)
End Sub
End Class
End Class
Вам нужно объявить событие внутри класса
Public Class f
Public Event ItemCheck As EventHandler
Private c As Class1
Public Sub New(c1 As Class1)
c = c1
AddHandler c.ItemCheck, AddressOf c_ItemCheck
End Sub
Private Sub c_ItemCheck(sender As Object, e As ItemCheckEventArgs)
RaiseEvent ItemCheck(sender, e)
End Sub
End Class