2010-11-11 4 views
0

J'ai développé une classe de contrôle utilisateur que j'ai l'intention d'utiliser pour les boutons. Après les avoir déclarées dans ma classe form1, j'utilise quelque chose comme ceci: inout_button1.click += new EventHandler(but1); pour ajouter un gestionnaire pour le clic. tout va bien jusqu'à ici. d'un autre thread je souhaite invoquer une méthode dans ma classe form1 qui change l'état du bouton (Enabled = true/false, construit dans la classe user-control) mais le programme me dit que je ne peux pas y accéder depuis un autre fil. Ma question est: Puis-je faire une invocation dans ma classe de boutons et pas pour chaque bouton? J'ai un peu comme 14 boutons donc c'est un peu mal à l'aise de faire un délégué pour chacun d'eux, un par un ..faire une invocation de masse requise

Répondre

1

Vous ne pouvez pas modifier vos contrôles d'interface utilisateur à partir de threads autres que le thread d'interface utilisateur, pour cette raison, il y a un problème. S'il vous plaît jeter un oeil into this MSDN article

0

Qu'est-ce que le gestionnaire d'événements a à voir avec l'état de votre bouton?

Mais oui, si vous créez une méthode SetState dans votre bouton, vous pouvez utiliser Invoquer() une fois dans cette méthode pour que cette méthode puisse être appelée en toute sécurité à partir d'un autre thread.

+0

Je voulais juste faire remarquer que le eventHandler a été déclaré en dehors de ma classe, juste pensé à donner plus de détails .. – Alex