Событие C# + = делегат {} эквивалент в VB.NET


Ну, я переводил C# into VB.NET с помощью developer fusion, и API не перевел мне эту часть...

owner.IsVisibleChanged += delegate
            {
                if (owner.IsVisible)
                {
                    Owner = owner;
                    Show();
                }
            };

Я знаю, что += is for AddHandler owner.IsVisibleChanged, AdressOf (delegate??), так что, какой эквивалент для этой части?

Заранее благодарю.

PD: у меня не хватает денег на покупку .NET Reflector : (и я впустую потратил испытание.

1 4

1 ответ:

Здесь есть две части.

  1. Анонимные методы. delegate в C# примерно соответствует анонимному Sub в VB здесь.

  2. Добавление обработчиков событий. += в C#, AddHandler в VB.

Складываем вместе:

AddHandler owner.IsVisibleChanged, _
    Sub()
        …
    End Sub

Кстати, оператор AddressOf, который вы упомянули, используется в VB для ссылки на (неанонимный) метод без его вызова. Поэтому вы могли бы использовать его здесь, если бы вы ссылались на существующий именованный метод, а не на анонимный метод.