我們使用vb.net/dev快速工具。我們有幾個控件文本框,組合等...而不是檢查每個值更改我們想要通過所有控件,並檢查是否有任何已編輯,然後保存表單關閉。以下是我嘗試完成此操作的一些代碼。問題是,儘管它在技術上工作...它使用遞歸AddDirtyEvent(c),所以當我去關閉窗體並單擊是保存..由於多個控件它多次調用該消息框...如果我採取它不會工作,並檢測到骯髒的變化。我只是想知道我怎麼能得到這個工作,我想或者如果有更簡單的方法的方式......檢查是否有任何控件已更改並在表格關閉時保存數據
Dim is_Dirty As Boolean = False
Private Sub AddDirtyEvent(ByVal ctrl As Control)
For Each c As Control In ctrl.Controls
If TypeOf c Is TextEdit Then
Dim tb As TextEdit = CType(c, TextEdit)
AddHandler tb.EditValueChanged, AddressOf SetIsDirty
End If
'If TypeOf c Is ComboBoxEdit Then
' Dim cb As ComboBoxEdit = CType(c, ComboBoxEdit)
' AddHandler cb.SelectedIndexChanged, AddressOf SetIsDirty
'End If
If c.Controls.Count > 0 Then
AddDirtyEvent(c)
End If
Next
End Sub
Private Sub SetIsDirty(ByVal sender As System.Object, ByVal e As System.EventArgs)
is_Dirty = True
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
If is_Dirty = True Then
Dim dr As DialogResult = MessageBox.Show("Do you want save changes before leaving?", "Closing Well Info", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2)
If dr = Windows.Forms.DialogResult.Yes Then
SimpleButtonSave.PerformClick()
Me.Close()
End If
End If
End Sub
天狼星,如果(當)該解決您的問題,一定要點擊勾選推動這一關未答覆的名單。不是沒有,但你有許多問題,沒有被接受的答案。 – Plutonix
好的謝謝..還有一個問題。在devexpress中,我們有一個gridcontrol和一個gridview。 gridiview是在gridcontrol內,我試圖找到窗體上的控件..找不到gridview,但我可以找到gridcontrol。但一旦我找到網格控制,我需要改變,如果gridview中的任何東西改變......任何想法 – Sirus