Architecture du contrôle ToolStrip

Les ToolStrip classes et ToolStripItem les classes fournissent un système flexible et extensible pour afficher les éléments de barre d’outils, d’état et de menu. Ces classes sont toutes contenues dans l’espace System.Windows.Forms de noms et elles sont généralement nommées avec le préfixe « ToolStrip » (par ToolStripOverflowexemple) ou avec le suffixe « Strip » (par exemple MenuStrip).

ToolStrip

Les rubriques suivantes décrivent ToolStrip et les contrôles qui dérivent de celui-ci.

ToolStrip est la classe de base abstraite pour MenuStrip, StatusStripet ContextMenuStrip. Le modèle objet suivant montre la hiérarchie d’héritage ToolStrip .

Diagram that shows the ToolStrip object model.

Vous pouvez accéder à tous les éléments d’une ToolStripItems collection. Vous pouvez accéder à tous les éléments d’une ToolStripDropDownItemDropDownItems collection. Dans une classe dérivée de ToolStrip, vous pouvez également utiliser la DisplayedItems propriété pour accéder uniquement aux éléments actuellement affichés. Il s’agit des éléments qui ne sont pas actuellement dans un menu de dépassement de capacité.

Les éléments suivants sont spécifiquement conçus pour fonctionner en toute transparence avec toutes ToolStripSystemRenderer les orientations et ToolStripProfessionalRenderer dans toutes les orientations. Elles sont disponibles par défaut au moment du design pour le ToolStrip contrôle :

MenuStrip est le conteneur de niveau supérieur qui remplace MainMenu. Il fournit également des fonctionnalités de gestion des clés et de plusieurs interfaces de document (MDI). Fonctionnellement, ToolStripDropDownItem et ToolStripMenuItem travailler avec MenuStrip, bien qu’ils soient dérivés de ToolStripItem.

Les éléments suivants sont spécifiquement conçus pour fonctionner en toute transparence avec toutes ToolStripSystemRenderer les orientations et ToolStripProfessionalRenderer dans toutes les orientations. Elles sont disponibles par défaut au moment du design pour le MenuStrip contrôle :

StatusStrip

StatusStrip remplace le StatusBar contrôle. Les caractéristiques spéciales d’inclure StatusStrip une disposition de table personnalisée, la prise en charge du dimensionnement et des poignées mobiles du formulaire, ainsi que la Spring propriété, qui permet de remplir automatiquement l’espace ToolStripStatusLabel disponible.

Les éléments suivants sont spécifiquement conçus pour fonctionner en toute transparence avec toutes ToolStripSystemRenderer les orientations et ToolStripProfessionalRenderer dans toutes les orientations. Elles sont disponibles par défaut au moment du design pour le StatusStrip contrôle :

ContextMenuStrip

ContextMenuStrip remplace ContextMenu. Vous pouvez associer un ContextMenuStrip contrôle à n’importe quel contrôle, et un clic droit affiche automatiquement le menu contextuel (ou le menu contextuel). Vous pouvez afficher un ContextMenuStrip programme à l’aide de la Show méthode. ContextMenuStrip prend en charge l’annulation Opening et Closing les événements pour gérer la population dynamique et les scénarios à plusieurs clics. ContextMenuStripprend en charge les images, l’élément de menu case activée état, le texte, les touches d’accès, les raccourcis et les menus en cascade.

Les éléments suivants sont spécifiquement conçus pour fonctionner en toute transparence avec toutes ToolStripSystemRenderer les orientations et ToolStripProfessionalRenderer dans toutes les orientations. Elles sont disponibles par défaut au moment du design pour le ContextMenuStrip contrôle :

Fonctionnalités génériques ToolStrip

Les rubriques suivantes décrivent les fonctionnalités et le comportement génériques pour les contrôles dérivés et les ToolStrip contrôles dérivés.

Peinture

Vous pouvez effectuer une peinture personnalisée de ToolStrip plusieurs façons. Comme avec d’autres contrôles Windows Forms, les ToolStripToolStripItem méthodes et Paint événements substituables sont tous deux substituablesOnPaint. Comme avec la peinture régulière, le système de coordonnées est relatif à la zone cliente du contrôle ; autrement dit, le coin supérieur gauche du contrôle est 0, 0. Événement Paint et OnPaint méthode pour un ToolStripItem comportement semblable à d’autres événements de peinture de contrôle.

Les ToolStrip contrôles fournissent également un accès plus fin au rendu des éléments et du conteneur par le biais de la ToolStripRenderer classe, qui a des méthodes substituables pour peindre l’arrière-plan, l’arrière-plan de l’élément, l’image d’élément, la flèche d’élément, le texte de l’élément et la ToolStripbordure du . Les arguments d’événement de ces méthodes exposent plusieurs propriétés telles que des rectangles, des couleurs et des formats de texte que vous pouvez ajuster selon vos besoins.

Pour ajuster seulement quelques aspects de la façon dont un élément est peint, vous remplacez généralement le ToolStripRenderer.

Si vous écrivez un nouvel élément et que vous souhaitez contrôler tous les aspects de la peinture, remplacez la OnPaint méthode. À partir de l’intérieur OnPaint, vous pouvez utiliser des méthodes à partir du ToolStripRenderer.

Par défaut, il ToolStrip est double mis en mémoire tampon, tirant parti du OptimizedDoubleBuffer paramètre.

Parentales

Le concept de propriété et de parenté du conteneur est plus complexe dans ToolStrip les contrôles que dans d’autres contrôles de conteneur Windows Forms. Cela est nécessaire pour prendre en charge des scénarios dynamiques tels que le dépassement de capacité, le partage d’éléments déroulants sur plusieurs ToolStrip éléments et la prise en charge de la génération d’un ContextMenuStrip contrôle.

La liste suivante décrit les membres liés au parentage et explique leur utilisation.

  • OwnerItem accède à l’élément qui est la source de l’élément déroulant. Ceci est similaire à SourceControl, mais au lieu de retourner un contrôle, il retourne un ToolStripItem.

  • SourceControl détermine quel contrôle est la source du ContextMenuStrip moment où plusieurs contrôles partagent le même ContextMenuStrip.

  • GetCurrentParent est un accesseur en lecture seule à la Parent propriété. Un parent diffère d’un propriétaire dans lequel un parent indique le courant ToolStrip retourné dans lequel l’élément est affiché, qui peut se trouver dans la zone de dépassement.

  • Owner retourne la collection Items dont la ToolStrip collection Items contient le fichier actif ToolStripItem. Il s’agit du meilleur moyen de référencer ImageList ou d’autres propriétés dans le niveau ToolStrip supérieur sans écrire de code spécial pour gérer le dépassement de capacité.

Comportement des contrôles hérités

Les contrôles suivants sont verrouillés chaque fois qu’ils sont utilisés dans l’héritage :

Par exemple, créez une application Windows Forms à l’aide d’un ou plusieurs contrôles de la liste précédente. Définissez le modificateur d’accès d’un ou plusieurs contrôles public sur ou protected, puis générez le projet. Ajoutez un formulaire qui hérite du premier formulaire, puis sélectionnez un contrôle hérité. Le contrôle apparaît verrouillé, se comporte comme si son modificateur d’accès était private.

Prise en charge de ToolStripContainer de l’héritage

Le ToolStripContainer contrôle prend en charge des scénarios hérités limités, comme dans l’exemple suivant :

  1. Créez une nouvelle application Windows Forms.

  2. Ajoutez un ToolStripContainer au formulaire.

  3. Définissez le modificateur d’accès sur ToolStripContainerpublic ou protected.

  4. Ajoutez n’importe quelle combinaison de ToolStripcontrôles MenuStripet ContextMenuStrip de contrôles aux ToolStripPanel régions du ToolStripContainer.

  5. Créez le projet.

  6. Ajoutez un formulaire qui hérite du premier formulaire.

  7. Sélectionnez l’hérité ToolStripContainer sur le formulaire.

Comportement hérité des contrôles enfants

Une fois les étapes précédentes effectuées, le comportement hérité suivant se produit :

  • Dans le concepteur, le contrôle s’affiche avec une icône héritée.

  • Les ToolStripPanel contrôles sont verrouillés ; vous ne pouvez pas sélectionner ou réorganiser leur contenu.

  • Vous pouvez ajouter des contrôles au ToolStripContentPanel, déplacer les contrôles et les rendre enfants des ToolStripContentPanelcontrôles .

  • Vos modifications persistent après avoir généré le formulaire.

    Remarque

    Supprimez les modificateurs d’accès de tous les ToolStripPanel contrôles qui font partie d’un ToolStripContainer. Le modificateur d’accès de l’ensemble ToolStripContainer du contrôle.

Confiance partielle

Les limitations de ToolStrips sous confiance partielle sont conçues pour empêcher l’entrée accidentelle d’informations personnelles susceptibles d’être utilisées par des personnes ou des services non autorisés. Les mesures de protection sont les suivantes :

  • ToolStripDropDown les contrôles nécessitent AllWindows d’afficher des éléments dans un ToolStripControlHost. Cela s’applique aux deux contrôles intrinsèques tels que ToolStripTextBox, ToolStripComboBoxainsi ToolStripProgressBar qu’aux contrôles créés par l’utilisateur. Si cette exigence n’est pas remplie, ces éléments ne sont pas affichés. Aucune exception n’est générée.

  • La définition de la AutoClose propriété à false n’est pas autorisée et le paramètre d’événement annulable Closing est ignoré. Cela rend impossible l’entrée de plusieurs touches sans ignorer l’élément déroulant. Si cette exigence n’est pas remplie, ces éléments ne sont pas affichés. Aucune exception n’est générée.

  • De nombreux événements de gestion des séquences de touches ne sont pas déclenchés s’ils se produisent dans des contextes d’approbation partielle autres que AllWindows.

  • Les clés d’accès ne sont pas traitées lorsqu’elles AllWindows ne sont pas accordées.

Utilisation

Les modèles d’utilisation suivants ont une incidence sur ToolStrip la disposition, l’interaction clavier et le comportement de l’utilisateur final :

  • Joint à un ToolStripPanel

    Il ToolStrip peut être repositionné à l’intérieur du et de l’autre ToolStripPanelToolStripPanel. La Dock propriété est ignorée et, si la Stretch propriété est false, la taille de la ToolStrip taille des éléments est ajoutée au ToolStripPanel. En règle générale, il ToolStrip ne participe pas à l’ordre de tabulation.

  • Ancré

    Le ToolStrip conteneur est placé sur un côté d’un conteneur dans une position fixe, et sa taille s’étend sur l’ensemble du bord auquel il est ancré. En règle générale, il ToolStrip ne participe pas à l’ordre de tabulation.

  • Absolument positionné

    L’élément ToolStrip est semblable à d’autres contrôles, dans le fait qu’il est placé par la Location propriété, a une taille fixe et participe généralement à l’ordre de tabulation.

Interaction clavier

Clé d'accès

Combinées ou en suivant la touche ALT, les touches d’accès permettent d’activer un contrôle à l’aide du clavier. ToolStrip prend en charge les clés d’accès explicites et implicites. La définition explicite utilise un caractère ampersand (&) qui précède la lettre. La définition implicite utilise un algorithme qui tente de trouver un élément correspondant en fonction de l’ordre des caractères d’une propriété donnée Text .

Touches de raccourci

Les touches de raccourci utilisées par une MenuStrip combinaison de l’énumération Keys (qui n’est pas spécifique à l’ordre) pour définir la touche de raccourci. Vous pouvez également utiliser la ShortcutKeyDisplayString propriété pour afficher une touche de raccourci avec du texte uniquement, par exemple afficher « Del » au lieu de « Supprimer ».

La touche ALT active le MenuStrip pointé par MainMenuStrip. À partir de là, Ctrl+Tab navigue entre ToolStrip les contrôles au sein de ToolStripPanels. La touche TAB et les touches de direction du pavé numérique naviguent entre les éléments d’un ToolStrip. Un algorithme spécial gère la navigation dans la région de dépassement de capacité. SPACEBAR sélectionne un ToolStripButton, ToolStripDropDownButtonou ToolStripSplitButton.

Focus et validation

Lorsqu’elle est activée par la touche ALT, le MenuStrip ou ToolStrip généralement ne prend ni ne supprime le focus du contrôle qui a actuellement le focus. S’il existe un contrôle hébergé dans la liste déroulante ou dans la MenuStrip liste déroulante MenuStrip, le contrôle obtient le focus lorsque l’utilisateur appuie sur la touche TAB. En règle générale, les GotFocusévénements , LostFocuset LeaveEnterles événements de MenuStrip peuvent ne pas être déclenchés lorsqu’ils sont activés par le clavier. Dans ce cas, utilisez plutôt les événements et MenuDeactivate les MenuActivate événements.

Par défaut, CausesValidation est false. Appelez Validate explicitement sur votre formulaire pour effectuer la validation.

Disposition

Vous contrôlez ToolStrip la disposition en choisissant l’un des membres de ToolStripLayoutStyle la LayoutStyle propriété.

Dispositions de pile

L’empilement est l’organisation d’éléments à côté des deux extrémités du ToolStrip. La liste suivante décrit les dispositions de pile.

Autres fonctionnalités des dispositions de pile

Alignment détermine la fin de l’élément ToolStrip à laquelle l’élément est aligné.

Lorsque les éléments ne s’intègrent pas dans le ToolStripchamp , un bouton de dépassement s’affiche automatiquement. Le Overflow paramètre de propriété détermine si un élément apparaît toujours dans la zone de dépassement de capacité, si nécessaire ou jamais.

Dans l’événement LayoutCompleted , vous pouvez inspecter la Placement propriété pour déterminer si un élément a été placé sur le principal ToolStrip, le dépassement de capacité ToolStripou s’il n’est pas actuellement affiché du tout. Les raisons courantes pour lesquelles un élément n’est pas affiché sont que l’élément ne correspond pas à la valeur principale ToolStrip et sa Overflow propriété a été définie sur Never.

Faites un ToolStrip mobile en le plaçant dans un ToolStripPanel et en définissant sa GripStyle valeur Visible.

Autres options de disposition

Les autres options de disposition sont Flow et Table.

Mise en page fluide

Flow la disposition est la valeur par défaut pour ContextMenuStrip, ToolStripDropDownMenuet ToolStripOverflow. Il est similaire au FlowLayoutPanel. Les fonctionnalités de Flow disposition sont les suivantes :

Disposition du tableau

Table la disposition est la valeur par défaut pour StatusStrip. Il est similaire à TableLayoutPanel. Les fonctionnalités de Flow disposition sont les suivantes :

ToolStripItem

Les rubriques suivantes décrivent ToolStripItem et les contrôles qui dérivent de celui-ci.

ToolStripItem est la classe de base abstraite pour tous les éléments qui entrent dans un ToolStrip. Le modèle objet suivant montre la hiérarchie d’héritage ToolStripItem .

Diagram that shows the ToolStripItem object model.

ToolStripItemles classes héritent directement de ToolStripItem, ou elles héritent indirectement de par ToolStripControlHost ou ToolStripItemToolStripDropDownItem.

ToolStripItemles contrôles doivent être contenus dans un ToolStripformulaire , MenuStripStatusStripou ContextMenuStrip ne peuvent pas être ajoutés directement à un formulaire. Les différentes classes de conteneur sont conçues pour contenir un sous-ensemble approprié de ToolStripItem contrôles.

Le tableau suivant répertorie les contrôles boursiers ToolStripItem et les conteneurs dans lesquels ils ressemblent le mieux. Bien que n’importe quel ToolStrip élément puisse être hébergé dans n’importe quel ToolStripconteneur dérivé, ces éléments ont été conçus pour s’afficher le mieux dans les conteneurs suivants :

Remarque

ToolStripDropDown n’apparaît pas dans la boîte à outils du concepteur.

Élément contenu ToolStrip MenuStrip ContextMenuStrip StatusStrip ToolStripDropDown
ToolStripButton Oui No Non Non Oui
ToolStripComboBox Oui Oui Oui No Oui
ToolStripSplitButton Oui No Non Oui Oui
ToolStripLabel Oui No Non Oui Oui
ToolStripSeparator Oui Oui Oui No Oui
ToolStripDropDownButton Oui No Non Oui Oui
ToolStripTextBox Oui Oui Oui No Oui
ToolStripMenuItem No Oui Oui No Non
ToolStripStatusLabel Non Non Non Oui No
ToolStripProgressBar Oui No Non Oui No
ToolStripControlHost Oui Oui No Oui Oui

ToolStripButton

ToolStripButton est l’élément de bouton pour ToolStrip. Vous pouvez l’afficher avec différents styles de bordure, et vous pouvez l’utiliser pour représenter et activer les états opérationnels. Vous pouvez également le définir pour avoir le focus par défaut.

ToolStripLabel

La ToolStripLabel fonctionnalité d’étiquette fournit des fonctionnalités d’étiquette dans ToolStrip les contrôles. Il ToolStripLabel s’agit d’un ToolStripButton élément qui n’obtient pas le focus par défaut et qui ne s’affiche pas comme push ou mis en surbrillance.

ToolStripLabel en tant qu’élément hébergé prend en charge les clés d’accès.

Utilisez les propriétés et LinkVisitedles propriétés d’un ToolStripLabel contrôle de liaison dans un ToolStrip.LinkColorLinkBehavior

ToolStripStatusLabel

ToolStripStatusLabel est une version ToolStripLabel conçue spécifiquement pour une utilisation dans StatusStrip. Les caractéristiques spéciales incluent BorderStyle, BorderSideset Spring.

ToolStripSeparator

Ajoute ToolStripSeparator une ligne verticale ou horizontale à une barre d’outils ou un menu, en fonction de l’orientation. Il fournit un regroupement ou une distinction entre les éléments, tels que ceux d’un menu.

Vous pouvez ajouter une valeur ToolStripSeparator au moment du design en la choisissant dans une liste déroulante. Toutefois, vous pouvez également créer automatiquement un ToolStripSeparator trait d’union (-) en tapant un trait d’union dans le nœud du modèle de concepteur ou dans la Add méthode.

ToolStripControlHost

ToolStripControlHost est la classe de base abstraite pour ToolStripComboBox, ToolStripTextBoxet ToolStripProgressBar. ToolStripControlHost peut héberger d’autres contrôles, y compris des contrôles personnalisés, de deux façons :

  • Construire une ToolStripControlHost classe avec une classe qui dérive de Control. Pour accéder entièrement au contrôle hébergé et aux propriétés, vous devez revenir à la Control propriété en classe réelle qu’elle représente.

  • Étendez , et dans le constructeur sans paramètre de la classe héritée, appelez ToolStripControlHostle constructeur de classe de base en passant une classe qui dérive de Control. Cette option vous permet d’encapsuler les méthodes et propriétés de contrôle courantes pour faciliter l’accès dans un ToolStrip.

ToolStripComboBox

ToolStripComboBox est optimisé ComboBox pour l’hébergement dans un ToolStrip. Un sous-ensemble des propriétés et des événements du contrôle hébergé sont exposés au ToolStripComboBox niveau, mais le contrôle sous-jacent ComboBox est entièrement accessible via la ComboBox propriété.

ToolStripTextBox

ToolStripTextBox est optimisé TextBox pour l’hébergement dans un ToolStrip. Un sous-ensemble des propriétés et des événements du contrôle hébergé sont exposés au ToolStripTextBox niveau, mais le contrôle sous-jacent TextBox est entièrement accessible via la TextBox propriété.

ToolStripProgressBar

ToolStripProgressBar est optimisé ProgressBar pour l’hébergement dans un ToolStrip. Un sous-ensemble des propriétés et des événements du contrôle hébergé sont exposés au ToolStripProgressBar niveau, mais le contrôle sous-jacent ProgressBar est entièrement accessible via la ProgressBar propriété.

ToolStripDropDownItem

ToolStripDropDownItem est la classe de base abstraite pour ToolStripMenuItem, ToolStripDropDownButtonet ToolStripSplitButton, qui peut héberger des éléments directement ou héberger des éléments supplémentaires dans un conteneur déroulant. Pour ce faire, définissez la DropDown propriété sur une ToolStripDropDown propriété et définissez la Items propriété du ToolStripDropDown. Accédez directement à ces éléments déroulants via la DropDownItems propriété.

ToolStripMenuItem

ToolStripMenuItem est un ToolStripDropDownItem élément qui fonctionne avec ToolStripDropDownMenu et ContextMenuStrip qui gère la mise en surbrillance, la disposition et la disposition des colonnes spéciales pour les menus.

ToolStripDropDownButton

ToolStripDropDownButtonToolStripButtonressemble à , mais il affiche une zone déroulante lorsque l’utilisateur clique dessus. Masquez ou affichez la flèche déroulante en définissant la ShowDropDownArrow propriété. ToolStripDropDownButton héberge un ToolStripOverflowButton élément qui affiche les éléments qui dépassent le ToolStrip.

ToolStripSplitButton

ToolStripSplitButton combine les fonctionnalités de bouton et de bouton déroulant.

Utilisez la DefaultItem propriété pour synchroniser l’événement Click de l’élément déroulant choisi avec l’élément affiché sur le bouton.

Fonctionnalités génériques ToolStripItem

ToolStripItem fournit les fonctionnalités et options génériques suivantes pour hériter des contrôles :

  • Événements de base

  • Gestion des images

  • Alignment

  • Relation de texte et d’image

  • Style d’affichage

Événements de base

ToolStripItem les contrôles reçoivent leur propre clic, souris et événements de peinture, et peuvent également effectuer un prétraitement du clavier.

Gestion des images

Les Imagepropriétés , , ImageKeyImageAlignImageIndexImageScaling et les propriétés concernent différents aspects de la gestion des images. Utilisez des images dans les contrôles en ToolStrip définissant ces propriétés directement ou en définissant la propriété runtime uniquement ImageList .

La mise à l’échelle des images est déterminée par l’interaction des propriétés dans les deux ToolStrip et ToolStripItem, comme suit :

Alignment

La valeur de la Alignment propriété détermine la fin de l’élément ToolStrip à laquelle un élément apparaît. La Alignment propriété fonctionne uniquement lorsque le style de disposition du fichier ToolStrip est défini sur l’une des valeurs de dépassement de capacité de la pile.

Les éléments sont placés dans l’ordre ToolStrip dans lequel les éléments apparaissent dans la collection Items. Pour modifier par programmation l’emplacement d’un élément, utilisez la Insert méthode pour déplacer l’élément dans la collection. Cette méthode déplace l’élément, mais ne le doublons pas.

Relation de texte et d’image

La TextImageRelation propriété définit le placement relatif de l’image par rapport au texte d’un ToolStripItem. Les éléments qui n’ont pas d’image, de texte ou les deux sont traités comme des cas spéciaux afin que l’élément ToolStripItem ou les éléments manquants n’affiche pas de point vide.

Style d’affichage

DisplayStyle vous permet de définir les valeurs des propriétés Texte et Image d’un élément tout en affichant uniquement ce que vous souhaitez. Cela est généralement utilisé pour modifier uniquement le style d’affichage lors de l’affichage du même élément dans un contexte différent.

Classes d’accessoires

Les classes qui fournissent différentes autres fonctionnalités sont les suivantes :

Voir aussi