2012-04-13 5 views
1

Dans ma principale forme, je cours ceci:méthodes ne fonctionnent pas

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

disableForm est une méthode d'extension pour le formulaire dans mon programme défini comme suit:

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

    f.Cursor = Cursors.WaitCursor; 
} 

Le problème est que la la commande suivante btnAbort.Enabled = true; ne fait rien.

Cela fonctionne si je mets le code directement dans la méthode et ne pas appeler disableForm(). Pourquoi cela arrive-t-il? Cela a-t-il quelque chose à voir avec les discussions?

+0

Vous ne pouvez pas modifier les éléments d'interface d'un fil non-UI, si c'est ce que vous demandez –

+0

Où dans ma question ai-je mentionné cela n'a pas été un thread d'interface utilisateur? – TheGateKeeper

+0

Vous devriez être plus précis sur ce que vous entendez par "Est-ce que cela a quelque chose à voir avec les discussions" alors. –

Répondre

7

Cette ligne:

f.Enabled = false; 

devrait être

c.Enabled = false; 

Le problème est que vous désactivez accidentellement votre forme entière.

+0

Oh mon dieu, comment diable ai-je manqué ça !!!! – 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

Pourquoi cette réponse est-elle votée ... – Sadaf

Questions connexes