0

嗨,我有一个带有 TabControl 的表单,每个 tabPage 中有 3 个标签页和控件(文本框和组合框)。
我有一个事件用于 tabPages (controlValueChanged) 中控件的所有更改,还有一个事件用于 tabControl.SelectedIndexChanged。
所以如果表单是脏的,我想启用我的按钮(btnOK)。

Private Sub controlValueChanged(sender As System.Object, e As System.EventArgs)
     If bLoading=False 'bLoading is a boolean that is true after I create and populate the controls
        Dirty = True 'Dirty is a boolean property
     End If
End Sub

因此,当我在其中一个控件中更改某些内容时,会触发事件并启用 btnOK。
问题是我第一次更改(访问)到 tabPage 控件是 TabPage 触发 controlValueChanged 事件,导致我的按钮启用,即使我没有更改控件中的任何内容。
如果我第二次访问 TabPage,则不会触发该事件。
我知道这是正常的,但我如何才能克服这个问题并让我的 Dirty =true 只有当控件因为某些东西发生变化而不是当 tabPage 发生变化时才被触发?

4

1 回答 1

0

创建一个新的布尔变量怎么样 - DoNotMakeDirty,比如说,然后你可以在TabControl1_SelectedIndexChangedsub 中设置DoNotMakeDirty = True然后在你的controlValueChangedsub 中放置一个 if 语句。

于 2012-11-02T17:34:25.377 回答