У меня есть несколько панелей, каждая из которых содержит несколько групповых блоков, содержащих различные типы элементов управления.Время от времени мне нужно обновлять тексты и значения элементов управления свежими данными, но я не хотел бы запускать события, связанные с каждым элементом управления.Поэтому я хотел бы удалить обработчики для каждого из задействованных элементов управления, изменить текст и значения, а затем еще раз добавить обработчики.
Я знаю, что должен использовать 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