2012-04-13 6 views
1

In meiner Hauptform arbeiten, ich bin mit diesem:Methoden nicht

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

disableForm ist eine Erweiterung Methode für die Form in meinem Programm wie folgt definiert:

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

    f.Cursor = Cursors.WaitCursor; 
} 

Das Problem, dass die ist nächster Befehl btnAbort.Enabled = true; tut nichts.

Es funktioniert, wenn ich den Code direkt in die Methode setzen und nicht disableForm() aufrufen. Warum passiert dies? Hat es etwas mit Threads zu tun?

+0

Sie können keine UI-Elemente aus einem nicht-UI-Thread ändern, wenn es das ist, was Sie –

+0

fragen: Wo in meiner Frage habe ich schon erwähne dieses Thema kein UI war? – TheGateKeeper

+0

Sie sollten gründlicher darüber sein, was Sie mit "Hat das etwas mit Threads zu tun haben" dann tun. –

Antwort

7

Diese Zeile:

f.Enabled = false; 

c.Enabled = false; 

Das Problem sein sollen, ist, weil Sie versehentlich sind Ihr gesamtes Formular zu deaktivieren.

+0

Oh Mann, wie zum Teufel habe ich das vermisst !!!! – TheGateKeeper

+0

S l v n a l t c c. –

+0

@MartinJames ??? –

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

Warum diese Antwort abgelehnt wird ... – Sadaf

Verwandte Themen