2010-12-02 18 views
1

J'ai créé un contrôle personnalisé en C# dans VSE, et il apparaît dans la liste à gauche. Mais je veux transmettre une référence à ma forme principale, et je le fais actuellement dans le constructeur. Et puis j'ai modifié manuellement, le concepteur VSE a généré du code pour transmettre le formulaire lui-même. Mais ci-après, quand j'essaie de voir avec le designview, VSE montre un message d'erreur. Est-ce que je l'ai fait dans le mauvais sens?Comment transmettre une variable dans un contrôle personnalisé?

class canvas : Control 
{ 

    public canvas(Form1 theForm) 
    { 

    } 
} 

Et puis dans le concepteur code généré:

this.canvas2 = new panel2.canvas(this); 

Répondre

2

vous pouvez simplement utiliser une propriété publique.

public Form1 mainForm { get; set; } 

Vous pouvez ensuite le transmettre en tant que paramètre sur votre objet canvas.

<canvas mainForm='<%= this %>'></canvas> 

Ou du code:

this.canvas2.mainForm = this; 
0

Peut-être, au lieu de passer le formulaire par le constructeur de votre contrôle, vous pouvez utiliser la méthode FindForm() du contrôle afin d'obtenir la forme dans laquelle la commande a été placée .