データを事前にロードした約 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
これはこれを行う効果的な方法ですか?頼れるか?誰かがより良いアイデアを持っているなら、私はそれを聞きたい.