[英]Check if text changes in textbox in VB.NET
好的,那里有很多例子,但它們不是我想要的。
我的VB.NET應用程序加載並從XML文件讀取以填充文本框。 然后,用戶可以更改文本並將其保存。 但是,如果該用戶去做其他事情,例如在下拉框中更改選擇,我希望它彈出一個對話框,警告他們該文本未保存,並給他們選擇拒絕更改,保存更改等的選項。 。
關於如何最好地實現這一點的任何想法? 我是否創建隱藏的文本框並進行比較? 我覺得我在設計可以輕松完成的事情。
提前致謝。
[更新]-由於文本量很小,因此我將使用兩個文本框,然后比較結果,但這是MsgBox遇到的問題。 無論如何,它總是以為我單擊了是。 想法還是應該去一個新的Q?
這是我的測試代碼:
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
If txtDetails.Text <> txtDetailsCOPY.Text Then
MsgBox("You changed text." & vbCrLf & "To save it, click YES" & vbCrLf & "To discard the changes, click NO.", MsgBoxStyle.YesNo, "Text Changed!")
If MsgBoxResult.Yes Then
MsgBox("You clicked YES")
ElseIf MsgBoxResult.No Then
MsgBox("You clicked NO")
End If
ElseIf txtDetails.Text = txtDetailsCOPY.Text Then
'MsgBox("Nothing changed!")
Exit sub
End If
End Sub
您可以添加一個布爾標志, textNotSaved
作為標志。 然后,在文本框的text_changed
事件中,可以將標志設置為true。 只要保存了文本,就可以將其設置為False。 每當發生任何其他事件(例如,按鈕上的click事件)時,請檢查該標志是否為true; 如果是這樣,則例如在消息框的幫助下提示用戶。 希望這可以幫助。
我會推遲保存的決定,直到用戶在包含文本框的對話框中單擊“取消”或“確定”按鈕為止。 如果不可能,則將文本框設置為只讀,提供一個編輯按鈕,然后打開一個模式對話框以編輯文本框。
當用戶離開文本框時,用消息框框用戶的問題是,這極具破壞性。 從用戶的角度來看,消息框是最昂貴的認知元素。 它們代表了一個完全的中斷。 用戶評估該消息框時,一切都停止了。 這就是為什么用戶經常忽略它們,並在沒有對其進行正確評估的情況下將其關閉的原因,即使它們很重要。 因此,請勿為此使用它們。
如果您有多個文本框,請考慮實施“臟污跟蹤”。 https://www.google.com/search?q=form.dirty+winforms
通常,您將使用模型IE和內存模型來表示要顯示的數據。 文本框更新后,它將在該模型中設置一個屬性。 然后,模型會通過設置臟標志或保留原始模型的副本來知道已更改。 當您去加載一個新模型時,您要檢查一下您創建的任何機制以提醒您以前的模型尚未保存。 然后彈出對話框。 不要將文本框用作數據存儲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.