0

強制フィールドアカウント番号を検証するための以下のコードを書いています。知らせる。エラーが発生した場合、ユーザーの要件はフィールドにフォーカスを戻すように設定されています。

If txtAccountNo = "" Then

    MessageBox.Show("Account no filed can't be left empty")
    txtAccountNo.SetFocus
    Exit Sub

End If

正常に動作しています。しかし、ユーザーがフォームに記入してアプリケーションを終了したくないとします。ユーザーがアカウント番号を入力するまで、メッセージボックスが表示され続けます。

どうすればこの状況を回避できますか?助けてください。

4

2 に答える 2

0

すべての検証ルールを 1 つの関数 / プロシージャ / サブルーチンに入れることができます (私は VB に詳しくなく、主に C++ / C# ユーザーです)。次に、ユーザーが入力されたデータをコミットしているときにのみこの関数を呼び出し、必須データが入力されていないか無効なデータが入力されている最初のコントロールにフォーカスを設定します。

入力する 3 つのコントロールを含むフォームがあるとします。

  • 必須ではない日付コントロール - dteDate
  • テキストボックス必須 - txtAcoutInfo
  • テキストボックス必須 - txtAddress

および 2 つのボタン:

  • [保存] ボタンと [キャンセル] ボタン。

「保存」ボタンを押すと、まず関数/プロシージャを呼び出してユーザー入力を検証します。入力された日付が dteDate で無効な場合は、それにフォーカスを設定し、関数を返す/終了します。txtAccountInfo にテキストが入力されていない場合は、それにフォーカスを設定し、関数を返す/終了します。txtAddress にテキストが入力されていない場合は、それにフォーカスを設定し、戻る/終了します。

「キャンセル」を押すと、この関数は呼び出されず、終了します。

于 2012-05-09T06:49:06.367 に答える
0

ユーザーがメッセージボックスを見たことを示すフラグを設定します。フラグをチェックして、今後のメッセージボックスを防止します。フォーカスをテキストボックスに戻す前に、フラグが設定されていることを確認してください。

dim bMsgBox as boolean=false

If txtAccountNo = "" and bMsgBox = false Then

    MessageBox.Show("Account no filed can't be left empty")
    bMsgBox=true
    txtAccountNo.SetFocus
    Exit Sub

End If
于 2012-05-09T06:48:08.800 に答える