簡體   English   中英

檢查文本是否在VB.NET中的文本框中更改

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM