VB.NET: Несколько событий - Как вызвать функцию только один раз? - PullRequest
0 голосов
/ 07 октября 2018

A имеет дюжину флажков для фильтрации данных в DataGridView.Все они выглядят более или менее так:

    Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
      filter1=CheckBox1.Checked
      Do_Filter()
    End Sub

У меня также есть кнопка "Установить все":

    Private Sub SetAll_Click(sender As Object, e As EventArgs) Handles SetAll.Click
      CheckBox1.Checked = True
      CheckBox2.Checked = True
      ' etc... 12 times
    End Sub

Все работает отлично.Единственная проблема состоит в том, что процедура Do_Filter () вызывается 12 раз ... Есть идеи, как отложить вызов Do_Filter () и сделать это только один раз в самом конце SetAll_Click ()?

1 Ответ

0 голосов
/ 07 октября 2018

Вы можете ввести логическую переменную:

Private doFilterEnabled As Boolean = True

Добавить оператор if здесь:

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
  filter1=CheckBox1.Checked
  If doFilterEnabled Then
      Do_Filter()
  End If  
End Sub

И небольшое исправление здесь:

Private Sub SetAll_Click(sender As Object, e As EventArgs) Handles SetAll.Click
  doFilterEnabled  = False
  CheckBox1.Checked = True
  CheckBox2.Checked = True
  ' etc... 12 times
  Do_Filter()
  doFilterEnabled  = True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...