1

私のメインフォームでは、これを実行しています:

this.disableForm();
btnAbort.Enabled = true;

disableFormは、次のように定義された私のプログラムのFormの拡張メソッドです。

public static void disableForm(this Form f)
{
    foreach (Control c in f.Controls)
    {
        f.Enabled = false;
    }

    f.Cursor = Cursors.WaitCursor;
}

問題は、次のコマンドbtnAbort.Enabled = true;が何もしないことです。

コードをメソッドに直接配置し、を呼び出さない場合に機能しますdisableForm()。なぜこうなった?それはスレッドと関係がありますか?

4

2 に答える 2

7

この行:

f.Enabled = false;

する必要があります

c.Enabled = false;

問題は、フォーム全体を誤って無効にしているためです。

于 2012-04-13T08:59:10.507 に答える
2
public static void disableForm(this Form f)
    {
        foreach (Control c in f.Controls)
        {
            //f.Enabled = false;
              c.Enabled = false;
         }

        f.Cursor = Cursors.WaitCursor;
    }
于 2012-04-13T09:02:58.487 に答える