2013-11-27 5 views
0

Мне интересно, можно ли использовать метод, связанный с элементом управления из другой функции. Например,Вызов метода управления из другой функции vb.net

Sub myCheckBox(sender As Object, e As EventArgs) Handles myCheckBox.CheckedChanged 
'''Code I want to run from other function 
End Sub 

Function MyOtherFunction(x as double, y as double) as double 
'''Call myCheckBox method 
End function 

ответ

0

В целом разумно ограничивать код в событиях обработкой связанных с пользователем вещей. Вы можете разместить общий код в сабвуферов и вызывать их из событий, другие методы (СУБ) и другие функции:

Sub myCheckBox(sender As Object, e As EventArgs) Handles myCheckBox.CheckedChanged 
    ' user/click related code 
    ' ... 
    CommonReusableCodeSub(sender As object) 
    End Sub 

    Function MyOtherFunction(x as double, y as double) as double 
    ' do some special stuff, maybe even just to prep 
    ' for the call to a common sub 
    CommonReusableCodeSub(Nothing) 
    End function 

    Sub CommonReusableCodeSub(chk as CheckBox) ' can also be a function 
     ' do stuff common to both above situations 

     ' note how to detect what is going on: 
     If chk Is Nothing then 
     ' was called from code, not event 
     ' do whatever 
     Exit Sub  ' probably 
     End If 

     Select Case chk.Name  ' or maybe chk.Tag 
      chk.thisOption 
      ' do whatever 
      chk.thatOption 
      ' do whatever 
      ' etc... 
     End Select 

    End Sub 

Это предотвращает приложение логики (бизнес/Интернет и т.д. и т.п. и т.д.) от получения безнадежно перемешались и даже зависит от UI-слой и текущий макет. Примечание: некоторые элементы управления реализуют способ вызова кода события: кнопки и радиоприемники, например, имеют btn.PerformClick, нет такой удачи с флажками.

+0

Спасибо за быстрый ответ, и я ценю, где вы едете с. В этом случае, однако, у меня есть много флажков, которые должны быть «обновлены», т.е. их код запускается при изменении переключателя радио. То, как вещи устанавливаются, я прохожу через флажки, чтобы определить, какие из них проверены, а затем нужно запустить метод для каждого флажка. –

+0

все еще выполним с небольшим количеством абстракции ... см. Править (флажок действительно радио?) – Plutonix

+0

«Является ли флажок действительно радио» - нет того, что у меня есть графическое приложение, где есть 10 флажков, которые показывают разные кривые и радиомаяк, который манипулирует кривыми, поэтому, когда пользователь меняет радиопереключение, мне нужно обновить кривые. –

1

Предполагая, что WinForms:

Dim cbs = Me.Controls.OfType(Of Checkbox)().Where(Function(cb) cb.Checked).ToList() 
For Each cb In cbs 
    'run code for each checkbox that is checked 
Next 
+0

Правильно, это то, что у меня есть до сих пор, теперь мне нужно запустить метод для каждого cb. –

+0

@KyleTrainor вы думаете об этом неправильно: код, который вы хотите запустить, не является «методом» вообще, а кодом события: код, предназначенный для выполнения, когда ПОЛЬЗОВАТЕЛЬ взаимодействует с элементом управления. Ваш код (например, для выполнения расчета) не должен зависеть только от этого клика и не должен находиться в событии клика. – Plutonix

+0

Вам нужно предоставить нам более подробную информацию, это не имеет большого смысла на данном этапе. Какая функция? Что оно делает? Как «проверять флажки» выполняют некоторые вычисления? Обновите свой вопрос, а не комментарий. – OneFineDay

Смежные вопросы