TextField, classe
Objet léger qui représente une partie d'une forme qui peut afficher des étiquettes ou des zones de texte.
Hiérarchie d'héritage
System.Object
Microsoft.VisualStudio.Modeling.Diagrams.ShapeField
Microsoft.VisualStudio.Modeling.Diagrams.TextField
Microsoft.VisualStudio.Modeling.Diagrams.LabelTextField
Espace de noms : Microsoft.VisualStudio.Modeling.Diagrams
Assembly : Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0 (dans Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0.dll)
Syntaxe
'Déclaration
Public Class TextField _
Inherits ShapeField
public class TextField : ShapeField
Le type TextField expose les membres suivants.
Constructeurs
Nom | Description | |
---|---|---|
TextField | Initialise une nouvelle instance de la classe TextField. |
Début
Propriétés
Nom | Description | |
---|---|---|
AnchoringBehavior | Décrit comment le contenu du champ doit se positionner et se dimensionner en fonction du ShapeElement parent. (Hérité de ShapeField.) | |
DefaultAccessibleDescription | Obtient ou définit la description accessible par défaut. (Hérité de ShapeField.) | |
DefaultAccessibleName | Obtient ou définit le nom par défaut du champ de forme pour l'objet accessible. (Hérité de ShapeField.) | |
DefaultAccessibleState | Obtient l'état par défaut du champ de forme pour l'objet accessible. (Hérité de ShapeField.) | |
DefaultAutoSize | Si la valeur est true, la taille signalée minimale augmente pour s'adapter à la longueur du texte d'affichage.Les champs de texte dimensionnables automatiquement respecteront toujours la taille minimale spécifiée dans AnchoringBehavior. | |
DefaultBackgroundBrushId | Obtient ou définit l'ID du pinceau par défaut utilisé pour peindre l'arrière-plan du champ de forme. (Hérité de ShapeField.) | |
DefaultCommitOnEscape | Obtient ou définit une valeur indiquant si la touche Echap valide la modification.Si la valeur est true, la touche Entrée sera utilisée comme CRLF pour la modification sur place. | |
DefaultFocusable | Obtient le champ de forme et vérifie s'il peut recevoir le focus, ou donne au champ de forme la possibilité de recevoir le focus. (Hérité de ShapeField.) | |
DefaultFontId | Obtient ou définit l'ID de police par défaut. | |
DefaultInactiveSelectedBackgroundBrushId | Obtient ou définit l'ID du pinceau d'arrière-plan par défaut pour le champ de la forme. (Hérité de ShapeField.) | |
DefaultInactiveSelectedTextBrushId | Obtient ou définit l'ID du pinceau par défaut pour le texte sélectionné inactif. | |
DefaultIsHorizontal | Obtient ou définit l'état horizontal par défaut du texte. | |
DefaultMultipleLine | Si la valeur est true, le texte est encapsulé sur plusieurs lignes pour être contenu dans la largeur disponible. | |
DefaultPenId | Obtient ou définit l'ID du stylet par défaut à utiliser pour le champ de la forme. (Hérité de ShapeField.) | |
DefaultReflectParentFocusedState | Obtient le champ de la forme enfant et vérifie s'il doit recevoir le focus lorsque sa forme parente reçoit le focus ou définit la capacité de refléter l'état de focus de sa forme parente. (Hérité de ShapeField.) | |
DefaultReflectParentSelectedState | Obtient le champ de la forme enfant et vérifie s'il doit être sélectionné lorsque sa forme parente est activée ou définit la capacité de refléter l'état de sélection de sa forme parent. (Hérité de ShapeField.) | |
DefaultSelectable | Obtient le champ de forme et vérifie s'il peut être sélectionné par défaut ou définit l'état de sélection par défaut du champ de forme. (Hérité de ShapeField.) | |
DefaultSelectedBackgroundBrushId | Obtient ou définit l'ID du pinceau d'arrière-plan par défaut pour le champ de la forme. (Hérité de ShapeField.) | |
DefaultSelectedTextBrushId | Obtient ou définit l'ID du pinceau par défaut pour le texte sélectionné. | |
DefaultStringFormat | Obtient ou définit le format de chaîne par défaut pour le dessin de texte. | |
DefaultText | Obtient ou définit le texte par défaut à dessiner. | |
DefaultTextBrushId | Obtient ou définit l'ID du pinceau par défaut pour le texte. | |
DefaultVisibility | Obtient le champ de forme et vérifie s'il apparaît par défaut ou définit la visibilité par défaut du champ de forme. (Hérité de ShapeField.) | |
DisplayMember | Obtient ou définit le nom de la propriété à laquelle le texte est associé. | |
DrawBorder | (Ne pas utiliser – modification à venir) | |
FillBackground | (Ne pas utiliser – modification à venir) | |
Name | Obtient le nom du champ de forme. (Hérité de ShapeField.) |
Début
Méthodes
Nom | Description | |
---|---|---|
AccessibleDoDefaultAction | Exécute l'action par défaut pour l'objet accessible. (Hérité de ShapeField.) | |
AllowInPlaceEditorAutoSize | Par défaut, autorisez l'éditeur sur place à effectuer un redimensionnement automatique si le champ prend en charge le redimensionnent automatique. (Substitue ShapeField.AllowInPlaceEditorAutoSize(ShapeElement).) | |
AssociateValueWith(Store, AssociatedPropertyInfo) | Associe le champ de forme avec une propriété de domaine qui est assignée à un élément de forme. (Hérité de ShapeField.) | |
AssociateValueWith(Store, Guid) | Associe le champ de forme avec une propriété de domaine qui est assignée à un élément de forme. (Hérité de ShapeField.) | |
AssociateValueWith(Store, Guid, AssociatedPropertyInfo) | Associe le champ de forme avec une propriété de domaine qui est assignée à un élément de forme. (Hérité de ShapeField.) | |
AssociateVisibilityWith(Store, AssociatedPropertyInfo) | Associe la visibilité du champ de forme avec une propriété de domaine qui est assignée à un élément de forme. (Hérité de ShapeField.) | |
AssociateVisibilityWith(Store, Guid) | Associe la visibilité du champ de forme avec une propriété de domaine qui est assignée à un élément de forme. (Hérité de ShapeField.) | |
AssociateVisibilityWith(Store, Guid, AssociatedPropertyInfo) | Associe la visibilité du champ de forme avec une propriété de domaine qui est assignée à un élément de forme. (Hérité de ShapeField.) | |
CanEditValue | Retourne une valeur indiquant si la valeur de ce champ peut être modifiée. (Substitue ShapeField.CanEditValue(ShapeElement, DiagramClientView).) | |
CommitPendingEdit | Valide les modifications en attente. (Substitue ShapeField.CommitPendingEdit(ShapeElement, DiagramClientView).) | |
DoHitTest | Exécute un test de positionnement sur un point spécifié du diagramme pour déterminer si le point se trouve dans les limites du champ de forme. (Hérité de ShapeField.) | |
DoKeyboardNavigation | Navigue dans le domaine de forme à l'aide du clavier. (Hérité de ShapeField.) | |
DoPaint | Dessine le champ de texte. (Substitue ShapeField.DoPaint(DiagramPaintEventArgs, ShapeElement).) | |
EditValue(ShapeElement, DiagramClientView) | Appelle l'éditeur sur place. (Substitue ShapeField.EditValue(ShapeElement, DiagramClientView).) | |
EditValue(ShapeElement, DiagramClientView, PointD) | Appelle l'éditeur sur place, en définissant le signe insertion à la position de la souris spécifiée. (Substitue ShapeField.EditValue(ShapeElement, DiagramClientView, PointD).) | |
EditValue(ShapeElement, DiagramClientView, String) | Appelle l'éditeur sur place, en remplaçant le texte par le texte spécifié. | |
Equals | Détermine si l'objet spécifié est identique à l'objet actuel. (Hérité de Object.) | |
Finalize | Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.) | |
FindFirstChild | Localise le premier champ de forme enfant dans le champ de forme parent. (Hérité de ShapeField.) | |
FindLastChild | Localise le dernier champ de forme enfant dans le champ de forme parent. (Hérité de ShapeField.) | |
FindNextChild | Localise le prochain champ de forme enfant dans le champ de forme parent. (Hérité de ShapeField.) | |
FindNextInChildSubFields | Localise le champ de forme enfant suivant dans la séquence de navigation. (Hérité de ShapeField.) | |
FindPreviousChild | Localise le premier champ de forme enfant précédent dans le champ de forme parent. (Hérité de ShapeField.) | |
FindPreviousInChildSubFields | Localise le champ de forme enfant précédent dans la séquence de navigation. (Hérité de ShapeField.) | |
Focused | Obtient le champ de forme et vérifie s'il a le focus. (Hérité de ShapeField.) | |
GetAccessibilityObject | Obtient l'objet d'accessibilité qui est assigné au champ de la forme. (Hérité de ShapeField.) | |
GetAccessibleChild | Obtient l'objet Accessibility pour le champ enfant de la forme. (Hérité de ShapeField.) | |
GetAccessibleChildCount | Obtient le nombre d'objets Accessibility assignés au champ de forme parent et à ses champs de forme enfants. (Hérité de ShapeField.) | |
GetAccessibleDefaultActionDescription | Obtient l'objectif par défaut du champ de forme pour l'objet accessible. (Hérité de ShapeField.) | |
GetAccessibleDescription | Retourne la description accessible par défaut pour un champ de texte. (Substitue ShapeField.GetAccessibleDescription(ShapeElement).) | |
GetAccessibleHelp | Obtient l'aide du champ de forme pour l'objet accessible. (Hérité de ShapeField.) | |
GetAccessibleHelpTopicFileName | Obtient une rubrique de l'aide associée à l'objet accessible. (Hérité de ShapeField.) | |
GetAccessibleHelpTopicId | Obtient l'ID assigné à la rubrique d'aide de l'objet accessible. (Hérité de ShapeField.) | |
GetAccessibleName | Retourne le texte affiché comme nom accessible. (Substitue ShapeField.GetAccessibleName(ShapeElement).) | |
GetAccessibleRole | Extrait le rôle accessible de ce ShapeField. (Substitue ShapeField.GetAccessibleRole(ShapeElement).) | |
GetAccessibleState | Extrait l'état accessible de ce TextField.Par défaut, le TextField est invisible aux clients d'accessibilité si le champ ne peut pas prendre le focus et s'il n'existe aucun texte à afficher. (Substitue ShapeField.GetAccessibleState(ShapeElement, DiagramClientView).) | |
GetAccessibleValue | Retourne la valeur accessible. (Substitue ShapeField.GetAccessibleValue(ShapeElement).) | |
GetActiveInPlaceEditor | Retourne le contrôle pour l'éditeur sur place actif.Cette méthode peut retourner une valeur, auquel cas, aucun éditeur sur place n'est actif pour ce champ. (Substitue ShapeField.GetActiveInPlaceEditor(ShapeElement, DiagramClientView).) | |
GetAutoSize | Si la valeur est true, la taille signalée requise augmente pour s'adapter à la longueur du texte d'affichage.Les champs de texte dimensionnables automatiquement respecteront toujours la taille minimale spécifiée dans AnchoringBehavior. | |
GetBackgroundBrush | Obtient le pinceau qui dessine l'arrière-plan de l'élément Shape auquel ce champ de forme est assigné. (Hérité de ShapeField.) | |
GetBackgroundBrushId | Obtient l'ID du pinceau qui dessine l'arrière-plan de l'élément Shape auquel ce champ de forme est assigné. (Hérité de ShapeField.) | |
GetBounds | Obtient les limites pour le champ de la forme. (Hérité de ShapeField.) | |
GetCursor | Obtient le pointeur qui s'affiche lorsque la souris pointe sur le champ de forme. (Hérité de ShapeField.) | |
GetDisplayText | Obtient le texte à afficher par ce champ. | |
GetFocusable | Obtient le champ de forme et vérifie s'il peut recevoir le focus. (Hérité de ShapeField.) | |
GetFont | Obtient la police avec laquelle dessiner pour l'instance ShapeElement spécifiée. | |
GetFontHeight | Obtient l'espacement de la police. (c. - à-d., la hauteur d'une ligne de texte) dans des unités du monde.L'interligne est le jambage ascendant + jambage descendant + quelques plus recommandés.L'élévation est la hauteur du caractère au-dessus de la ligne de base. La profondeur est la hauteur du caractère au-dessous de la ligne de base.La hauteur supplémentaire se trouve sous le jambage descendant. | |
GetFontId | Obtient l'identificateur de la police avec laquelle dessiner pour l'instance de ShapeElement spécifiée. | |
GetHashCode | Sert de fonction de hachage par défaut. (Hérité de Object.) | |
GetInPlaceEditorBounds | Obtient les limites de l'éditeur sur place. (Hérité de ShapeField.) | |
GetMaximumInPlaceEditorSize | Par défaut, nous permettons au contrôle d'édition sur place de redimensionner jusqu'à 75 caractères. (Substitue ShapeField.GetMaximumInPlaceEditorSize(ShapeElement).) | |
GetMinimumInPlaceEditorSize | La taille d'éditeur sur place minimale est en fonction de la largeur minimale des caractères et de la hauteur des lignes. (Substitue ShapeField.GetMinimumInPlaceEditorSize(ShapeElement).) | |
GetMinimumSize | Obtient la largeur et la hauteur minimales ce ShapeField en unités universelles. (Substitue ShapeField.GetMinimumSize(ShapeElement).) | |
GetMultipleLine | Si la valeur est true, le texte peut être encapsulé sur plusieurs lignes pour s'ajuster à la largeur disponible. | |
GetPen | Obtient le stylet utilisé pour dessiner l'élément de forme auquel le champ de forme est assigné. (Hérité de ShapeField.) | |
GetPenId | Obtient l'ID du stylet utilisé pour dessiner l'élément Shape auquel le champ de forme est assigné. (Hérité de ShapeField.) | |
GetPotentialMouseAction | Obtient l'action de la souris à activer lorsque l'utilisateur clique ensuite sur un point spécifique dans le diagramme. (Hérité de ShapeField.) | |
GetSelectable | Obtient le champ de forme et vérifie s'il peut être sélectionné. (Hérité de ShapeField.) | |
GetStringFormat | Obtient le format de chaîne avec lequel dessiner le texte pour l'instance de ShapeElement spécifiée. | |
GetTextBrush | Obtient le pinceau avec lequel dessiner le texte pour l'instance de ShapeElement spécifiée. | |
GetTextBrushId | Obtient l'identificateur du pinceau avec lequel dessiner le texte pour l'instance de ShapeElement spécifiée. | |
GetType | Obtient le Type de l'instance actuelle. (Hérité de Object.) | |
GetValue | Obtient la valeur pour ce TextField. (Substitue ShapeField.GetValue(ShapeElement).) | |
GetValueDomainPropertyInfo | Obtient la propriété de domaine qui est assignée à la valeur dans le champ de forme. (Hérité de ShapeField.) | |
GetVisible | Obtient le champ de forme et vérifie s'il apparaît. (Hérité de ShapeField.) | |
HasFocusedAppearance | Obtient le champ de forme et vérifie s'il doit apparaître comme ayant le focus. (Hérité de ShapeField.) | |
HasPendingEdit | Retourne une valeur indiquant si l'édition sur place est active, avec une validation en attente. (Substitue ShapeField.HasPendingEdit(ShapeElement, DiagramClientView).) | |
HasSelectedAppearance | Obtient le champ de forme et vérifie s'il semble être sélectionné. (Hérité de ShapeField.) | |
IsNavigationKey(Char) | Obtient la clé que l'utilisateur a utilisée et vérifie si elle peut être utilisée pour naviguer entre les champs de forme. (Hérité de ShapeField.) | |
IsNavigationKey(Keys) | Obtient les clés utilisées par l'utilisateur et vérifie si elles peuvent être utilisées pour naviguer entre les champs de forme. (Hérité de ShapeField.) | |
MeasureDisplayText | Méthode d'assistance pour mesurer le texte spécifié. | |
MemberwiseClone | Crée une copie superficielle de l'objet Object actuel. (Hérité de Object.) | |
NavigateAscend | Déplace le focus sur le champ de forme précédent dans la séquence de navigation pour les formes sélectionnées. (Hérité de ShapeField.) | |
NavigateDescend | Déplace le focus sur le prochain champ de forme dans la séquence de navigation pour les formes sélectionnées. (Hérité de ShapeField.) | |
NavigateToFirst | Déplace le focus sur le premier champ de forme dans la séquence de navigation pour les formes sélectionnées. (Hérité de ShapeField.) | |
NavigateToLast | Déplace le focus sur le dernier champ de forme dans la séquence de navigation pour les formes sélectionnées. (Hérité de ShapeField.) | |
NavigateToNext | Déplace le focus sur le prochain champ de forme dans la séquence de navigation pour les formes sélectionnées. (Hérité de ShapeField.) | |
NavigateToPrevious | Déplace le focus sur le champ de forme précédent dans la séquence de navigation pour les formes sélectionnées. (Hérité de ShapeField.) | |
OnBeginEdit | Avertit les écouteurs lorsque l'édition sur place a commencé. (Hérité de ShapeField.) | |
OnClick | Avertit les écouteurs lorsque l'utilisateur a cliqué sur un champ de forme. (Hérité de ShapeField.) | |
OnDoubleClick | Appelle la modification sur place par défaut. (Substitue ShapeField.OnDoubleClick(DiagramPointEventArgs).) | |
OnEndEdit | Avertit les écouteurs lorsque l'édition sur place est terminée. (Hérité de ShapeField.) | |
OnKeyDown | Avertit les écouteurs lorsque l'utilisateur maintient une touche enfoncée tout en pointant un champ de forme avec la souris. (Hérité de ShapeField.) | |
OnKeyPress | Appelle l'éditeur si le champ est modifiable et si n'importe quel caractère alphanumérique est saisi. (Substitue ShapeField.OnKeyPress(DiagramKeyPressEventArgs).) | |
OnKeyUp | Avertit les écouteurs lorsque l'utilisateur a relâché une touche tout en pointant un champ de forme avec la souris. (Hérité de ShapeField.) | |
OnMouseDown | Avertit les écouteurs lorsque l'utilisateur maintient le bouton de la souris enfoncé sur un champ de forme. (Hérité de ShapeField.) | |
OnMouseMove | Avertit les écouteurs lorsque la souris a été déplacée sur un champ de forme. (Hérité de ShapeField.) | |
OnMouseUp | Avertit les écouteurs lorsque l'utilisateur a relâché le bouton de la souris sur un champ de forme. (Hérité de ShapeField.) | |
OnMouseWheel | Avertit les écouteurs lorsque la souris a été pivotée au-dessus un champ de forme. (Hérité de ShapeField.) | |
Selected | Obtient le champ de forme et vérifie s'il est sélectionné. (Hérité de ShapeField.) | |
SetSelectionRange | Définit la sélection sur une plage de champs de forme enfants. (Hérité de ShapeField.) | |
SetValue | Assigne la valeur spécifiée à un champ de forme. (Hérité de ShapeField.) | |
SetVisible | Définit la visibilité du champ de forme. (Hérité de ShapeField.) | |
ToString | Retourne une chaîne qui représente l'objet actif. (Hérité de Object.) |
Début
Notes
Lorsque vous définissez un décorateur de texte dans une forme, elle est représentée par un TextField. Pour obtenir des exemples de l'initialisation de TextFields et d'un autre ShapeFields, inspectez DSL GeneratedCode\\ Shapes.cs dans votre solution business DSL.
Un TextField est un objet qui gère une zone dans une forme, telles que l'espace attribué à un nom. Une instance de TextField est partagée entre de nombreuses formes à la même classe. L'instance de TextField ne stocke pas le texte de l'étiquette séparément pour chaque instance : au lieu de cela, la méthode d'GetDisplayText(ShapeElement) prend la forme en tant que paramètre, puis peut rechercher le dépendant de texte sur l'état actuel de la forme et de son élément de modèle.
Comment l'apparence d'un champ de texte est déterminée
La méthode d'DoPaint() par défaut effectue ces tâches. Il s'agit d'une vue simplifiée de son code :
// Simplified version:
public override void DoPaint(DiagramPaintEventArgs e, ShapeElement parentShape)
{
string text = GetDisplayText(shape);
StringFormat format = GetStringFormat(parentShape);
Brush brush = GetTextBrush(e.View, shape);
using (Font font = GetFont(shape))
{
e.Graphics.DrawString(text, font, brush, format);
}
}
// StringFormat determines whether the string is centered etc.
// To customize statically for all instances of this shape field,
// assign to DefaultStringFormat.
// To customize dynamically or per shape, override this:
public virtual StringFormat GetStringFormat(ShapeElement shape)
{ return DefaultStringFormat; }
// Override to customize the displayed string:
public virtual string GetDisplayText(ShapeElement shape)
{ return this.GetValue(shape).ToString(); }
// Brush determines the text color.
// To change the brush for every field, change the shape’s styleset.
// To customize to a brush in the style set, override GetTextBrushId.
// To change the brush to non-standard color, override this.
// Should take account of whether selected.
public virtual Brush GetTextBrush(DiagramClientView view, ShapeElement shape)
{ return shape.StyleSet.GetBrush(this.GetTextBrushId(view, shape)); }
// Brush ID selects a brush from a StyleSet.
// Either return a member of DiagramBrushes
// or add your own brush to the shape or application’s styleset.
// Override this to change dynamically or per instance.
// To change statically, just assign to default values.
public virtual StyleSetResourceId GetTextBrushId(DiagramClientView view, ShapeElement shape)
{ return IsSelected(view, shape) ? (view.Focused ? DefaultSelectedTextBrushId
: DefaultInactiveSelectedTextBrushId ) : DefaultTextBrushId ;
}
// Font determines the shape and size of the text.
// To change the font for every field, change the shape’s styleset.
// To customize to a font in the style set, override GetFontId.
// To change the font to a non-standard font, override this.
public virtual Font GetFont(ShapeElement shape)
{ return shape.StyleSet.GetFont(GetFontId(shape)); }
// Selects a font from a styleset.
// Either return a member of DiagramFonts or
// add your own font to the shape or application’s styleset.
// To change statically for all instances of this field,
// assign to DefaultFontId.
// To change per shape or dynamically, override this.
public virtual StyleSetResourceId GetFontId(ShapeElement parentShape)
{ return DefaultFontId; }
Il existe plusieurs autres paires de méthodes d'Get et propriétés d'Default, telles que DefaultMultipleLine/GetMultipleLine(). Vous pouvez affecter une valeur à la propriété par défaut pour modifier la valeur pour toutes les instances du champ de forme. Pour permettre la valeur à varier d'une instance de type à un autre, ou le dépendant sur l'état de la forme ou son élément de modèle, substituez la méthode de Get.
Personnalisations statiques
Si vous souhaitez modifier chaque instance du champ de forme, la première découverte si vous pouvez définir la propriété dans la définition de DSL. Par exemple, vous pouvez définir la taille de police et le style dans la fenêtre Propriétés.
Remplacez le cas contraire, la méthode d'InitializeShapeFields de la classe de forme, puis affectez une valeur à la propriété appropriée d'Default... du champ de texte.
Avertissement
Pour remplacer InitializeShapeFields(), vous devez définir la propriété Génère un double dérivée de la classe de forme à true dans la définition de DSL.
Dans cet exemple, une forme un champ de texte qui sera utilisé pour les commentaires des utilisateurs. Nous souhaitons utiliser la police standard de commentaire. Puisqu'il s'agit d'une police standard de l'ensemble de style, il est possible de définir l'ID de police par défaut :
partial class ExampleShape
{ protected override void InitializeShapeFields(IList<ShapeField> shapeFields)
{
// Fields set up according to DSL Definition:
base.InitializeShapeFields(shapeFields);
// Find and update comment field:
TextField commentField = ShapeElement.FindShapeField(shapeFields, "CommentDecorator") as TextField;
// Use the standard font for comments:
commentField.DefaultFontId = DiagramFonts.CommentText;
Personnalisations dynamiques
Pour faire varier l'apparence le dépend de l'état d'une forme ou son élément de modèle, dériver votre propre sous-classe d'TextField et remplacer une ou plusieurs méthodes d'Get... Vous devez également substituer la méthode d'InitializeShapeFields de la forme, puis remplacez l'instance du TextField par une instance de votre propre classe.
L'exemple suivant configure la police d'un dépend de champ de texte sur l'état d'une propriété booléenne de domaine de l'élément de modèle de la forme.
Pour exécuter cet exemple de code, créez une nouvelle solution de DSL à l'aide de le modèle minimale de langage. Ajoutez une propriété de domaine AlternateState valeur booléenne de la classe de domaine d'ExampleElement. Ajoutez un décorateur d'icône à la classe d'ExampleShape, et définir son image dans un fichier bitmap. Cliquez sur Transformer tous les modèles. Ajoutez un nouveau fichier de code dans le projet de DSL, puis insérez le code suivant.
Pour tester le code, appuyez sur F5 et, dans la solution de débogage, ouvrez un exemple de schéma. L'état par défaut de l'icône doit apparaître. Sélectionnez la forme et dans la fenêtre des Propriétés, remplacez la valeur de la propriété AlternateState. La police du nom d'élément doit modifier.
using Microsoft.VisualStudio.Modeling;
using Microsoft.VisualStudio.Modeling.Diagrams;
...
partial class ExampleShape
{
/// <summary>
/// Compose a list of the fields in this shape.
/// Called once for each shape class.
/// </summary>
protected override void InitializeShapeFields(IList<ShapeField> shapeFields)
{
// Fields set up according to DSL Definition:
base.InitializeShapeFields(shapeFields);
// Replace the text field for NameDecorator:
TextField oldField = ShapeElement.FindShapeField(shapeFields, "NameDecorator") as TextField;
shapeFields.Remove(oldField);
// Replace with my text field based on DSL Definition values:
MyTextField newField = new MyTextField(oldField);
shapeFields.Add(newField);
}
}
/// <summary>
/// Dynamic font depends on state of model element.
/// </summary>
public class MyTextField : TextField
{
public MyTextField(TextField prototype)
: base(prototype.Name)
{
DefaultText = prototype.DefaultText;
DefaultFocusable = prototype.DefaultFocusable;
DefaultAutoSize = prototype.DefaultAutoSize;
AnchoringBehavior.MinimumHeightInLines = prototype.AnchoringBehavior.MinimumHeightInLines;
AnchoringBehavior.MinimumWidthInCharacters = prototype.AnchoringBehavior.MinimumWidthInCharacters;
DefaultAccessibleState = prototype.DefaultAccessibleState;
}
public override System.Drawing.Font GetFont(ShapeElement parentShape)
{
// Access the Boolean domain property of the model element:
if ((parentShape.ModelElement as ExampleElement).AlternateState)
return new System.Drawing.Font("Callisto", 14.0f,
System.Drawing.FontStyle.Italic |
System.Drawing.FontStyle.Bold);
else
return base.GetFont(parentShape);
}
}
Ensembles de style
L'exemple précédent montre comment vous pouvez modifier le champ de texte à toutes les polices disponibles. Toutefois, une méthode est préférable de la modifier à une d'un ensemble de styles associé à de la forme ou de l'application. Pour cela, vous remplacez l'GetFontId ou le GetTextBrushId().
Également, envisagez de modifier le style la valeur de la forme en remplaçant l'InitializeResources. Ceci a un effet de modifier les polices et les pinceaux pour tous les champs de forme.
Sécurité des threads
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.