2010-11-21 4 views
13

Dans WinForms, comment puis-je créer un UserControl que lorsque je mets mon formulaire, je peux ajouter d'autres contrôles à l'intérieur en les faisant glisser de la boîte à outils, comme avec tous les contrôles de conteneurs (panneaux, groupes, etc.)? J'ai essayé d'ajouter des contrôles en les laissant tomber dans mon contrôle mais quand je déplace mon contrôle, les contrôles que j'ai ajoutés restent là où ils sont, ce qui n'arriverait pas si au lieu de mon contrôle j'utiliserais un Panel (les autres contrôles déplacer avec le panneau).Comment créer un UserControl dans lequel vous pouvez laisser tomber d'autres contrôles?

+0

WinForms ou WPF? –

+0

WinForms ........ – Juan

Répondre

20

Contrairement à un contrôle Panel par exemple, un UserControl n'agit pas comme un contrôle de conteneur une fois qu'il est placé sur un autre formulaire. Il existe un support complet au moment de la conception lorsque vous créez le UserControl lui-même, mais son comportement par défaut ne lui permet pas d'agir en tant que contrôle de composant après qu'il a été placé sur un autre formulaire. C'est pourquoi vous ne pouvez pas ajouter d'autres contrôles en les faisant glisser depuis la boîte à outils. Pour ajouter ce type de comportement à un UserControl, vous devez ajouter le DesignerAttribute à la définition de votre classe personnalisée UserControl. Par exemple:

using System.ComponentModel; 
using System.ComponentModel.Design; 

[Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))] 
public class MyUserControl : System.Windows.Forms.UserControl 
{ 
    //...your code here 
} 

(. Voir l'article MSDN pour complément lecture)


Si vous souhaitez implémenter un support complet de concepteur pour imbriqués les contrôles dans votre UserControl, ce qui est légèrement plus difficile. Pour une discussion plus complète, voir this article sur CodeProject.

Questions connexes