Новичок VB.net пытается конвертировать код на C # - PullRequest
0 голосов
/ 11 января 2011

У меня были проблемы с преобразованием следующего довольно простого кода C # в vb.net 4.0, который, как я понимаю, имеет анонимных делегатов. Я просто еще не мог понять это.

_combo.DataBound += (sender, args) =>
                                    {
                                        var item = _combo.FindItemByValue(values[0].ToString());
                                        if (item != null)
                                            item.Selected = true;
                                    };

Я пробовал следующее

_combo.DataBound += Function(sender, args)
                                        Dim item = _combo.FindItemByValue(values(0).ToString())
                                        If item IsNot Nothing Then
                                            item.Selected = True
                                        End If

                                    End Function

Но компилятор жалуется, что DataBound не может быть вызван напрямую, но должен вызываться с RaiseEvents

Ответы [ 2 ]

2 голосов
/ 11 января 2011

AddHandler _combo.DataBound, Function (sender, args) ... End Функция, я думаю, правильный синтаксис.

1 голос
/ 11 января 2011

Мне кажется, я понял это.

объявить событие

Закрытое событие OnCombo_DataBound (значения ByVal Как ArrayList)

Используйте RaiseEvent, чтобы запустить его

RaiseEvent OnCombo_DataBound(values)

Создать обработчик для события

 Private Sub Combo_DataBound(ByVal values As System.Collections.ArrayList) Handles OnCombo_DataBound
                Dim item = _combo.FindItemByValue(values(0).ToString())
                If item IsNot Nothing Then
                    item.Selected = True
                End If
            End Sub
...