1

検証イベントと検証済みイベントを通じてテキストボックスを検証しています。以下は私のコードです

    private void tbms_Validating(object sender, CancelEventArgs e)
    {
        if (tbms.Text.Length==0)
        {
            MessageBox.Show("Ms is Empty");
            e.Cancel = true;
        }
    }

    private void tbms_Validated(object sender, EventArgs e)
    {
        MessageBox.Show("No Error");
    }

それはうまく機能しますが、私が直面している問題は、テキストボックスにテキストがなく、コントロールボックスのキャンセルボタンからアプリケーションを閉じたい場合です。Ms is Empty というメッセージボックスが表示され、ウィンドウに再度プロンプトが表示されます. テキストボックスにテキストを入力してキャンセルボタンをクリックすると、アプリケーションが閉じました。この問題を解決する方法を教えてください。よろしくお願いします。よろしく

4

3 に答える 3

1

検証は、フォームが閉じられているときにも発生します。Validating イベントが e.Cancel プロパティを true に設定すると、デフォルトの FormClosing イベントによってフォームが閉じられなくなります。これを次のように回避できます。

private void CancelButton_Click(object sender, EventArgs e) {
    this.AutoValidate = System.Windows.Forms.AutoValidate.Disable;
    this.Close();    // or this.DialogResult = DialogResult.Cancel
}
于 2013-11-05T20:39:26.380 に答える
0

キャンセル ボタンで「CausesValidation」プロパティを false に設定する必要があります。

于 2013-11-05T20:40:52.477 に答える