2010-11-03 20 views
0

Si j'ajoute une classe de composant à mon projet contenant des contrôles communs, comment puis-je en afficher une instance dans un panneau de mon formulaire principal?Afficher une instance d'une classe de composant au format principal dans C#

Je l'utilise pour créer une instance de ma classe: Component test = new Component1(); où Component1 est le nom de ma classe de composants

Alors comment pourrais-je faire quelque chose comme: panel1.Controls.Add (test); ? Ou y a-t-il un moyen de le faire sans utiliser les panneaux?

+0

Quelle langue est-ce? – user489041

+0

Je ne pense pas qu'il soit possible d'afficher des composants sur un formulaire sauf s'ils sont également des contrôles. – Qwertie

+0

Vous utilisez le mot 'component' - cela signifie-t-il que vous avez hérité de la classe 'System.Component'? Vous devez hériter de 'Control', ou d'une autre classe dérivée de' Control', pour faire un contrôle. –

Répondre

0

Vous utilisez la mauvaise classe. Un composant ne peut pas être un enfant d'un panneau ou d'un formulaire, il n'a pas de présentation visuelle. La propriété Handle manquante est la plus importante.

Vous avez besoin d'un contrôle. Dérivez votre classe directement de Control ou de l'une des classes de contrôle intégrées (Button, Label, etc.). Vous feriez ce dernier si vous voulez personnaliser leur comportement et le rendre réutilisable.

+0

Merci, je vois où est mon erreur. Mais si j'utilise une classe CustomControl qui est de type Control, je ne peux toujours pas la rendre visible en utilisant panel1.Controls.Add (test). Y a-t-il une autre commande que je devrais ajouter? Ou y a-t-il un moyen plus simple de l'afficher dans le formulaire principal? – stp

+0

Il n'y a pas beaucoup de modes de défaillance évidents. Avoir un grand emplacement, avoir une taille nulle, ne pas utiliser BackColor ou mettre en œuvre Paint pour le distinguer de l'arrière-plan du panneau. –

0

Alors comment pourrais-je faire quelque chose comme: panel1.Controls.Add (test); ?

C'est la bonne façon.

Ou y a-t-il un moyen de le faire sans utiliser les panneaux?

Vous pouvez ajouter votre contrôle à autre chose qu'un panneau; par exemple, au formulaire lui-même: Controls.Add(test).