2010-11-15 3 views
2

Je souhaite créer un bouton (créé par moi en tant que contrôle utilisateur) à partir d'un autre fil que celui sur lequel je souhaite créer. La chose est que je sais comment modifier un objet de contrôle d'utilisateur d'un autre thread (en utilisant un délégué et .InvokeRequired) mais je ne sais pas comment je pourrais en créer un. Aucune suggestion ?Créer un contrôle utilisateur à partir d'un autre fil

Répondre

4

les opérations suivantes:

// From the other thread 

userControl11.BeginInvoke(new Action(() => 
{ 
    var button = new Button(); 

    button.Text = "My new button"; 

    userControl11.Controls.Add(button); 
})); 

Au sein du délégué (le () => { }), vous pouvez faire tout ce que vous aimez avec le contrôle de l'utilisateur et la forme.

+0

dans mes Winforms j'ai inclus dans une fonction que j'appelle du fil .. dans lequel j'ai inclus le code suivant: panel6.BeginInvoke (nouveau Action (() => { controlAtentionare ca = new controlAtentionare (data, severitate, locatie, alarma, descriere, true); ca.Location = new Point (0, this.Controls.Count * ca.Height); this.panel6.Controls.Add (ca); MessageBox. Show ("LALA"); })); – Alex

+0

L'alerte "lala" est affichée mais mon contrôle n'est pas ajouté – Alex

+0

Genius! Solution géniale en place. Dans certains cas, je déteste créer des méthodes supplémentaires pour invoquer même si c'est un petit processus. Merci beaucoup, appris quelque chose de nouveau :). – C4u

2

Utilisez la même manière que pour la modification d'un contrôle utilisateur. La fonction qui crée un contrôle doit être exécutée dans le thread d'interface utilisateur et appelée à l'aide de Invoke ou BeginInvoke. Transmettez toutes les informations requises pour la création du contrôle à l'aide des paramètres de délégué.

Questions connexes