Проверить, были ли внесены какие-либо изменения в TabPage

Поэтому мне интересно, может ли кто-нибудь дать мне хорошую идею, как что-то сделать. У меня есть tabControl в моем приложении - я загружаю страницу - TabPage1 - примерно с 25-30 полями. При загрузке всех данных - я запускаю цикл, чтобы сохранить каждое контрольное значение в.tag. У меня также есть функция isDirty(), которая в основном проверяет ctr.tag.tostring <> ctr.text каждого элемента управления. Мне трудно понять, как создать быстрый обработчик для проверки всех элементов управления в форме. Я пытался использовать TagPage1.Validating, однако это ничего не делает.

Моя функция isDirty() выглядит следующим образом...

    Private Function isDirty() As Boolean

    isDirty = False

    For Each ctr As Control In TabPage1.Controls
        If TypeOf ctr Is TextBox And ctr.Enabled = True Then
            If ctr.Tag.ToString <> ctr.Text Then
                isDirty = True
            End If
        End If
        'more if statements for comboboxes and such
      Next
    End Function

Я надеюсь, что смогу подключить эту функцию где-нибудь и сделать вызов на что-то вроде

 if isDirty() then
    MsgBox "You have made a change to this form"
 End if

Должен ли я вызывать это при изменении выбора каждого элемента управления?

1 ответ

Есть 2 подхода

  1. Когда большинство элементов управления не имеют обработчика событий изменения, ваш подход кажется правильным. Кстати, в приведенном выше коде вы пропустили Exit For, после isDirty = True,
  2. Когда большинство элементов управления изменили реализованный обработчик событий (это будет иметь место, если в вашем дизайне у вас есть модели данных / объекты), вместо того, чтобы проверять изменения в цикле, я бы предпочел проверить, когда это изменение сделано. Я имею в виду объявить переменную уровня формы bool changed, Управление как textbox, combobox, radiobutton, checkboxи т. д. обычно имеют свои обработчики событий изменения, если изменение сделано установленным changed в True,
Другие вопросы по тегам