2

フォームにキャンセルボタンがあります。WndProcこのCancelボタンがクリックされたことをメソッド内で判断し、そのためのコードを記述したいと思います。そうしないと、まだ実行されていない他のすべてのコントロール検証イベントをキャンセルできないため、これは絶対に必要です。

助けてください。

.NET - 2.0、ウィンフォーム

4

2 に答える 2

3

検証に失敗したコントロールがある場合、CauseValidation は役に立ちません。

確かにそうです、それがこのプロパティが行うように設計されたものです。これが機能していることを示すフォームの例を次に示します。フォームにテキストボックスとボタンをドロップします。ボックスは常に検証に失敗しますが、ボタンをクリックしてテキストボックスをクリアする方法に注意してください。そして、フォームを閉じる方法。

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        textBox1.Validating += new CancelEventHandler(textBox1_Validating);
        button1.Click += new EventHandler(button1_Click);
        button1.CausesValidation = false;
        this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
    }

    private void textBox1_Validating(object sender, CancelEventArgs e) {
        // Always fail validation
        e.Cancel = true;
    }
    void button1_Click(object sender, EventArgs e) {
        // Your Cancel button
        textBox1.Text = string.Empty;
    }
    void Form1_FormClosing(object sender, FormClosingEventArgs e) {
        // Allow the form to close even though validation failed
        e.Cancel = false;
    }
}
于 2012-05-17T13:11:22.017 に答える