Vue d'ensemble des éditeurs de types d'interface utilisateur
Vous pouvez fournir une expérience personnalisée au moment du design pour les types de propriété complexes en implémentant un éditeur de types muni d'une interface utilisateur.
Affichage et édition de types personnalisés
Lorsque vous exposez un type personnalisé en tant que propriété, il existe trois façons d'éditer la valeur de la propriété dans une PropertyGrid :
Vous pouvez éditer votre propriété en place en tant que chaîne. Cette opération requiert un TypeConverter pour votre type personnalisé. Pour plus d'informations, consultez Comment : implémenter un convertisseur de type.
Vous pouvez éditer votre propriété avec une interface utilisateur déroulante. Cela est particulièrement utile pour les propriétés qui peuvent être définies d'un seul clic.
Vous pouvez éditer votre propriété avec une boîte de dialogue modale. Si votre propriété est particulièrement complexe, une boîte de dialogue complète peut être nécessaire pour l'éditer correctement.
Pour activer l'édition d'un seul clic ou à l'aide d'une boîte de dialogue modale, vous devez implémenter un éditeur de types muni d'une interface utilisateur pour interagir avec une PropertyGrid.
Éditeurs déroulants
Les éditeurs déroulants sont idéaux pour les types qui peuvent être définis d'un seul clic. Par exemple, vous éditez les propriétés Dock et BackColor de la classe Control dans une PropertyGrid avec un éditeur déroulant.
Vous accédez à un éditeur de types muni d'une interface utilisateur déroulant en cliquant sur la flèche () qui apparaît à côté de l'entrée de propriété sélectionnée dans une PropertyGrid. Votre interface utilisateur personnalisée apparaît, attachée à la PropertyGrid. La partie supérieure de sa fenêtre est positionnée le long de la partie inférieure de l'entrée de propriété et sa largeur correspond à celle de l'entrée de propriété. Cette fenêtre de l'éditeur doit également être fermée après que l'utilisateur a fait une sélection. Votre implémentation doit appeler la méthode DropDownControl pour positionner et dimensionner la fenêtre de votre éditeur de types muni d'une interface utilisateur dans l'environnement de design et vous devez appeler la méthode CloseDropDown pour fermer la fenêtre.
Éditeurs de boîtes de dialogue modales
Les éditeurs modaux sont utiles pour les types qui requièrent une interface utilisateur complètement interactive. Par exemple, les éditeurs de collections tels que l'Éditeur de la collection Tab Page de TabControl ou la boîte de dialogue Modifier les colonnes du contrôle DataGridView sont des éditeurs modaux.
Vous accédez à un éditeur de types muni d'une interface utilisateur modal en cliquant sur le bouton de sélection () qui apparaît à côté de l'entrée de propriété sélectionnée dans une PropertyGrid. Votre boîte de dialogue modale apparaît et l'utilisateur interagit avec elle comme avec une boîte de dialogue classique. Votre implémentation doit appeler la méthode ShowDialog pour positionner et dimensionner votre boîte de dialogue dans l'environnement de design.
Implémentation d'un éditeur de types muni d'une interface utilisateur
Pour implémenter un éditeur de types muni d'une interface utilisateur personnalisé, vous devez au moins effectuer les tâches suivantes :
définir une classe qui dérive de UITypeEditor ;
substituer la méthode GetEditStyle pour informer PropertyGrid du type de style d'éditeur que l'éditeur utilisera ;
substituer la méthode EditValue pour gérer l'interface utilisateur, le traitement des entrées d'utilisateur et l'assignation des valeurs.
Vous pouvez ajouter la prise en charge de la peinture de la représentation d'une valeur dans une PropertyGrid en effectuant les tâches suivantes :
substituer GetPaintValueSupported pour indiquer que l'éditeur prend en charge l'affichage de la représentation de la valeur ;
substituer PaintValue pour implémenter l'affichage de la représentation de la valeur ;
substituer la méthode de constructeur UITypeEditor si l'éditeur doit avoir un comportement d'initialisation.
Notes
Les éditeurs de types munis d'une interface utilisateur sont souvent implémentés à l'aide des types de l'espace de noms System.Windows.Forms, mais ce n'est pas une obligation.Les éditeurs de types munis d'une interface utilisateur standard dans le .NET Framework dérivent de UITypeEditor.
Dérivation à partir de la classe UITypeEditor
Votre éditeur de types muni d'une interface utilisateur personnalisé doit dériver de la classe UITypeEditor. Définissez un constructeur par défaut si votre éditeur de types muni d'une interface utilisateur requiert une initialisation particulière.
Substitution de la méthode GetEditStyle
Lorsque vous sélectionnez un composant ou un contrôle dans le concepteur, la fenêtre Propriétés est repeinte avec les valeurs de propriété du composant ou du contrôle sélectionné. Lorsque vous sélectionnez une propriété, l'environnement de design interroge la méthode GetEditStyle pour déterminer comment représenter l'entrée de propriété.
Votre substitution retourne une valeur de l'énumération UITypeEditorEditStyle pour communiquer le style approprié de l'éditeur de types muni d'une interface utilisateur.
Le tableau suivant présente le comportement associé à chaque valeur UITypeEditorEditStyle.
Nom de membre |
Comportement |
---|---|
Ne fournit aucun composant d'interface utilisateur interactive. Un TypeConverter approprié est utilisé pour convertir une entrée de chaîne en valeur de propriété. |
|
Affiche un bouton en forme de flèche vers le bas () dans l'entrée de propriété. L'interface utilisateur est hébergée dans une fenêtre déroulante. |
|
Affiche un bouton de sélection () dans l'entrée de propriété. L'interface utilisateur est une boîte de dialogue modale. |
Substitution de la méthode EditValue
La méthode EditValue affiche l'interface utilisateur et affecte la valeur sélectionnée par l'utilisateur à la valeur de la propriété.
Éditeur déroulant
Pour un éditeur de types muni d'une interface utilisateur déroulant, vous interrogez un fournisseur de services à propos de l'interface IWindowsFormsEditorService. Ce service fournit des informations relatives à la position et à la taille pour votre interface utilisateur. En général, votre interface utilisateur sera implémentée en tant que Control. Votre implémentation EditValue crée une instance de ce contrôle, l'initialise avec la valeur de la propriété actuelle, puis la passe à la méthode DropDownControl pour qu'elle soit exécutée par l'environnement de design. Lorsque l'utilisateur a sélectionné une nouvelle valeur pour la propriété, votre implémentation EditValue ferme l'interface utilisateur en appelant CloseDropDown. La valeur de retour de votre implémentation EditValue devient la nouvelle valeur de la propriété affichée dans une PropertyGrid.
Éditeur modal
Pour un éditeur de types muni d'une interface utilisateur modal, vous interrogez un fournisseur de services à propos de l'interface IWindowsFormsEditorService. Ce service fournit des informations relatives à la position pour votre boîte de dialogue. En général, votre interface utilisateur sera implémentée en tant que classe dérivée de Form. Votre implémentation EditValue crée une instance de ce formulaire, l'initialise avec la valeur de la propriété actuelle, puis la passe à la méthode ShowDialog pour qu'elle soit exécutée par l'environnement de design. Si la valeur de retour de cet appel est OK, vous récupérez la nouvelle valeur de propriété du formulaire et vous l'utilisez comme valeur de retour. La valeur de retour de votre implémentation EditValue devient la nouvelle valeur de la propriété affichée dans une PropertyGrid.
Paramètre ITypeDescriptorContext
La méthode EditValue reçoit un paramètre ITypeDescriptorContext que vous pouvez utiliser pour interroger les informations contextuelles à propos de l'environnement de design. Avec ce paramètre, vous pouvez accéder aux membres suivants :
un PropertyDescriptor qui représente les métadonnées de la propriété ;
une propriété Instance qui fait référence au composant sélectionné dans la PropertyGrid ;
le IContainer du composant ;
les méthodes OnComponentChanging et OnComponentChanged qui avertissent l'environnement de design lorsque vous modifiez l'état d'un composant.
Mise à disposition d'une représentation graphique de la valeur de la propriété
Vous pouvez afficher une représentation graphique de la valeur de votre propriété en substituant la méthode PaintValue. Vous pouvez utiliser le paramètre PaintValueEventArgs fourni pour dessiner votre représentation dans un petit rectangle sur le côté gauche de l'entrée de la propriété dans une PropertyGrid.
Notes
Assurez-vous de conserver votre représentation graphique dans les limites définies par la propriété Bounds du paramètre PaintValueEventArgs.
Substituez la méthode GetPaintValueSupported pour retourner la valeur true afin d'avertir l'environnement de design que votre éditeur de types muni d'une interface utilisateur peint une représentation personnalisée de sa valeur.
Voir aussi
Tâches
Comment : créer un éditeur de types d'interface utilisateur
Comment : créer un contrôle Windows Forms qui bénéficie des fonctionnalités au moment du design