2012-04-13 6 views
1

を働いていない、私はこれを実行している:方法は、私のメインフォームで

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

disableFormは、次のように定義私のプログラムでフォームのための拡張メソッドです:

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

    f.Cursor = Cursors.WaitCursor; 
} 

問題があることです次のコマンドbtnAbort.Enabled = true;は何もしません。

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

+0

それはあなたが私の質問に、私は、これはUIスレッドではなかった言及しなかった –

+0

を求めているものだ場合は、非UIスレッドからUI要素を変更することはできませんか? – TheGateKeeper

+0

「これはスレッドと何か関係があるのですか?」という意味のことをもっと徹底する必要があります。 –

答えて

7

このライン:あなたが誤ってフォーム全体を無効にしているので

f.Enabled = false; 

c.Enabled = false; 

問題であるべきです。

+0

オハイオ州の男、どのように私はそれを逃すことができた!!!! – TheGateKeeper

+0

S l v n a l t c c。 –

+0

@ MartinsJames ??? –

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

     f.Cursor = Cursors.WaitCursor; 
    } 
+0

なぜこの回答が投票されたのですか... – Sadaf

関連する問題