Перебор между методами управления в форме - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть несколько панелей, каждая из которых содержит несколько групповых блоков, содержащих различные типы элементов управления.Время от времени мне нужно обновлять тексты и значения элементов управления свежими данными, но я не хотел бы запускать события, связанные с каждым элементом управления.Поэтому я хотел бы удалить обработчики для каждого из задействованных элементов управления, изменить текст и значения, а затем еще раз добавить обработчики.

Я знаю, что должен использовать CallByName, но его синтаксис мне немного неясен,Любой, кто хотел бы взглянуть на приведенный ниже метакод (пример для выбранных необменных методов) и внести необходимые исправления, был бы признателен.

For Each mpanel In Me.Controls
    If TypeOf (mpanel) Is MetroPanel Then
        For Each gbox In mpanel.controls
            If TypeOf gbox Is GroupBox Then
                For Each ctrl In gbox.controls
                    If TypeOf (ctrl) Is MetroComboBox Then
                        Dim methodName As String = ctrl.name.ToString & "_Selectedindexchanged"
                        Dim method = CallByName(ctrl, methodName, CallType.Method)
                        RemoveHandler DirectCast(ctrl, MetroComboBox).SelectedIndexChanged, method
                    End If
                Next
            End If
        Next
    End If
Next

1 Ответ

0 голосов
/ 08 февраля 2019

Можно удалить обработчик событий по имени, используя следующий синтаксис:

For Each mpanel In Me.Controls
If TypeOf (mpanel) Is MetroPanel Then
    For Each gbox In mpanel.controls
        If TypeOf gbox Is GroupBox Then
            For Each ctrl In gbox.controls
                If TypeOf (ctrl) Is MetroComboBox Then
                    Dim methodName As String = ctrl.name.ToString & "_SelectedIndexChanged"
                    Dim method As System.Reflection.MethodInfo = Type.GetType("MyClass").GetMethod(methodName)
                    RemoveHandler DirectCast(ctrl, MetroComboBox).SelectedIndexChanged, Addressof method
                End If
            Next
        End If
    Next
End If

Далее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...