6

私はC#アプリを開発しています。ユーザーがフォームを閉じる前に、いくつかの検証を行う必要があります。

イベントを使用しようとしましたFormClosingが、うまくいきませんでした。後でFormClosedイベントを使用しましたが、同じです。

問題は、(フォームの上部にある)「閉じるボタン」をクリックしても何も起こらないが、フォームのプロパティとすべてにイベントがあることです。

ここに画像の説明を入力 ここに画像の説明を入力

これは私のコードです:

    private void Inicio_FormClosing_1(object sender, FormClosingEventArgs e)
    {
    //things I have to do
    //...
    //...

    if(bandera==true)
    Application.Exit();

    }

    private void Inicio_FormClosed_1(object sender, FormClosingEventArgs e)
    {
    //things I have to do
    //...
    //...

    if(bandera==true)
    Application.Exit();

    }

何か案が?

ありがとうございました

4

6 に答える 6

3

特定の検証に応答してユーザーがフォームを閉じないようにするには、 を設定する必要がありますFormClosingEventArgs.Cancel = true

例えば:

private void Inicio_FormClosing_1(object sender, FormClosingEventArgs e)
{
    if (string.IsNullOrEmpty(txtSomethingRequired.Text))
    {
        MessageBox.Show("Something is required here!");
        if (txtSomethingRequired.CanFocus) txtSomethingRequired.Focus();
        e.Cancel = true;
        return;
    }
}

FormClosingフォームが閉じないようにするために、イベントでのみ検証を行うことができます。FormClosed手遅れになるまで待っていたら。

于 2013-10-28T17:52:41.340 に答える
1

メソッド名の末尾に「_1」が付いていることに気付きました。これらのメソッドの名前を変更しましたか?

その場合、UI コード (デザイナー ファイル) をこれらの新しいメソッド名で更新する必要があります。

これらのメソッドにブレークポイントを配置して、それらが呼び出されているかどうかを確認できます。

于 2013-10-28T17:57:15.677 に答える