2012-05-09 4 views
0

私は強制的なフィールドアカウント番号を検証するコードの下に書いています。形態で。それはproperlly働いてイベントを検証する際にイベントを検証する際にフォーカスを設定する際に、ループを終了しないようにしてください。

If txtAccountNo = "" Then 

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

End If 

: ユーザーの要件は、エラーが来たときに、フィールド上のバックフォーカス設定されています。しかし、ユーザーがフォームに記入してアプリケーションから抜け出したくないとします。 メッセージボックスは、ユーザーがアカウント番号を入力するまで表示され続けます。

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

+0

プロジェクトプロパティで[オプションを厳密にする]をオンにします。 –

答えて

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 
0

すべての検証ルールを1つの関数/プロシージャ/サブルーティンに入れることができます(私はVB、ほとんどC++/C#ユーザーには慣れていません)。この関数は、ユーザーが入力したデータをコミットしているときにのみコールし、必須データが入力されていないか無効なデータが入力された状態で最初の制御にフォーカスを設定します。 - dteDate

  • 必須テキストボックス - txtAccoutInfo
  • 必須テキストボックス - txtAddress
    • 必須ではありません日付コントロール:

      はあなたに充填する3つのコントロールを持つフォームを持っていると言います

    と2ボタン:

    • ボタン保存してボタンをキャンセルします。

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

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

    関連する問題