验证是否在TabPage

时间:2016-11-17 20:05:34

标签: vb.net dirty-data

所以我想知道是否有人能给我一个好主意如何做某事。我的应用程序中有一个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 个答案:

答案 0 :(得分:1)

有两种方法

  1. 当大多数控件没有更改事件处理程序时,您的方法似乎是正确的。顺便说一下,在上面的代码中,您Exit For之后错过了isDirty = True
  2. 当大多数控件已经更改了事件处理程序时(如果你的设计中有数据模型/对象就是这种情况),而不是检查循环中的更改,我宁愿检查何时进行更改。我的意思是说声明一个表单级变量bool changed。像textboxcomboboxradiobuttoncheckbox等控件通常都有自己的更改事件处理程序,如果更改设置为changed到{{ 1}}。