C # для VB: Class.Event + = (отправитель, аргументы) => имя_функции (параметры) - PullRequest
2 голосов
/ 06 апреля 2011

Я пытаюсь преобразовать код C # из этой веб-страницы в VB.

Кажется, что все конвертировалось очень хорошо с помощью онлайн-конвертера, но затем я дошел до следующей строки:

fadeOutAnimation.Completed += (sender, args) => OnFadeOutAnimationCompleted(d, hostGrid, grid);

Событие fadeOutAnimation.Completed создает событие с подписью (отправитель, аргументы), а d, hostGrid и grid являются локальными переменными для функции, содержащей это таинственное назначение обработчика события.

Я думаю, что вижу, что инструкция в этой строке C # говорит коду выполнить функцию OnFadeOutAnimationCompleted, используя d, hostgrid и grid в качестве параметров, когда происходит fadeoutAnimation.Completed, но я понятия не имею, что даже искать для того, чтобы повторить это поведение в VB.net.

Может ли кто-нибудь дать мне некоторую терминологию, чтобы я мог лучше научиться тому, как это называется?

Ответы [ 3 ]

3 голосов
/ 06 апреля 2011
AddHandler fadeOutAnimation.Completed, Sub() 
    OnFadeOutAnimationCompleted(d, hostGrid, grid)
End Sub

Это было давно, но так как вы не используете параметры в обработчике событий, я не думаю, что вам нужно их включать (из-за непринужденного преобразования делегата).Если так, это будет выглядеть примерно так:

AddHandler fadeOutAnimation.Completed, Sub(sender as object, args as EventArgs) 
    OnFadeOutAnimationCompleted(d, hostGrid, grid)
End Sub
1 голос
/ 06 апреля 2011

Клавиатура, которую вы должны искать, это "лямбда-выражение".

1 голос
/ 06 апреля 2011

Это лямбда-выражение. Дай мне посмотреть, как это сделать в VB ...

AddHandler fadeOutAnimation.Completed, Sub(sender, e) _
(OnFadeOutAnimationCompleted(d, hostGrid, grid))
...