Пожалуйста, руководство по 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 Заявление дает следующие ошибки:

  1. с не событие app.f
  2. Ожидается конец заявления

любой может поделиться со мной правильным синтаксисом.

Спасибо

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
Другие вопросы по тегам