0

検証イベントがあります。

    private void EmployeeIDtextBox_Validating(object sender, CancelEventArgs e)
    {

        if (EmployeeIDtextBox.Text == "")
        {
            MessageBox.Show("Please Enter EmployeeID.", "Invalid EmployeeID");
        }

    }

そして、cancelbutton causevalidation を false に設定しますが、cancelbutton を押すとメッセージボックスが表示されます。

4

2 に答える 2

0
    bool IsCancelBtnClicked = false;
    private void EmployeeIDtextBox_Validating(object sender, CancelEventArgs e)
    {
        if (EmployeeIDtextBox.Text == "")
        {
            MessageBox.Show("Please Enter EmployeeID.", "Invalid EmployeeID");
        }
    }

    private void button3_Click(object sender, EventArgs e)
    {
        IsCancelBtnClicked = true;
        EmployeeIDtextBox.Validating -= new CancelEventHandler(textBox4_Validating);
        this.Close();
    }      

このhttps://stackoverflow.com/a/16113700/2322994に感謝します。:)

于 2013-05-13T12:47:39.840 に答える
0

Cancel ボタンの階層にあるすべてのコントロールの CausesValidation プロパティを false に設定する必要があります。

例: Form1 には Panel1 が含まれ、Panel1 にはキャンセル ボタンが含まれます。Form1、Panel1、Cancel ボタンの CausesValidation プロパティを false に設定する必要があります。

CausesValidation は Control クラスのプロパティです。詳しくはこちら

コントロールは、CausesValidation がデフォルト値である true の場合、検証イベントを発生させることができます。

階層内のコントロールの CausesValidation が true で、キャンセル ボタンをクリックする前にフォーカスを受け取った場合、Validating イベントが発生します。

panel1 のコントロールでどこでも無効にならないようにするには、別のパネルを使用するか、[キャンセル] ボタンには何も使用しないでください。

それが役に立てば幸い。

編集:最後にチェックしました。キャンセル ボタンに移動するときにフォーカスを取得するコントロールは、CausesValidation を false にする必要があります。

TextBox 自体を除く TextBox の階層については、CausesValidation を false に設定します。

于 2013-05-13T05:59:10.517 に答える