我有一个表单,上面有大约 20 个控件(ComboBox
、TextBox
等),我已经预先加载了数据。这将显示给用户,并使他们能够更改任何字段。
我不知道识别变化已经发生的最佳方式。经过一番研究,我发现TextBox.TextChanged
并设置了标志IsDirty = True
或类似的东西。
我不认为这将是 100% 防弹的,因为用户可能会更改该值,然后返回并将其更改为最初加载时的状态。我一直在考虑保存当前数据.Tag
,然后将其与.Text
用户单击“取消”时输入的数据进行比较,以简单地询问他们是否要保存更改。
这是我的代码:
Private Sub Form1_Load(ByVal sender as Object, byVal e as System.EventArgs)Handles MyBase.Load
For Each ctr as Control in me.Controls
if typeof ctr is TextBox then
ctr.tag=ctr.text
end if
Next
End Sub
这是用户单击“取消”时的代码:
Private Sub CmdCancel_Click (ByVal sender as Object, ByVal e As System.EventArgs) Handles CmdCancel.Click
For each ctr As Control in Me.Controls
If Typeof ctr is Textbox then
if ctr.tag.tostring <> ctr.text then
MsgBox ("Do you want to save the items", YesNo)
end if
End if
Next
End sub
这是一种有效的方法吗?可以依靠吗?如果有人有更好的想法,我很想听听。