TextField Class

 

Lightweight object that represents a part of a shape that can display text labels or areas.

Namespace:   Microsoft.VisualStudio.Modeling.Diagrams
Assembly:  Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0 (in Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0.dll)


public class TextField : ShapeField

NameDescription
System_CAPS_pubmethodTextField(String)

Initializes a new instance of the TextField class.

NameDescription
System_CAPS_pubpropertyAnchoringBehavior

Describes how the content of the field should position and size itself in relation to the parent ShapeElement.(Inherited from ShapeField.)

System_CAPS_pubpropertyDefaultAccessibleDescription

Gets or sets the default accessible description.(Inherited from ShapeField.)

System_CAPS_pubpropertyDefaultAccessibleName

Gets or sets the default name of the shape field for the accessible object.(Inherited from ShapeField.)

System_CAPS_pubpropertyDefaultAccessibleState

Gets the default state of the shape field for the accessible object.(Inherited from ShapeField.)

System_CAPS_pubpropertyDefaultAutoSize

If true, the text field's minimum reported size will grow to accomodate the length of the diplay text. Autosizable text fields will still respect the minimum size specified in the AnchoringBehavior.

System_CAPS_pubpropertyDefaultBackgroundBrushId

Gets or sets the ID of the default brush to paint the background of the shape field.(Inherited from ShapeField.)

System_CAPS_pubpropertyDefaultCommitOnEscape

Gets or sets a value indicating whether the Escape key commits the edit. If true, the Enter key will be used as a CRLF for in-place editing.

System_CAPS_pubpropertyDefaultFocusable

Gets the shape field and verifies whether it can receive focus, or gives the shape field the ability to receive focus.(Inherited from ShapeField.)

System_CAPS_pubpropertyDefaultFontId

Gets or sets the default font id.

System_CAPS_pubpropertyDefaultInactiveSelectedBackgroundBrushId

Gets or sets the ID of the default background brush for the shape field.(Inherited from ShapeField.)

System_CAPS_pubpropertyDefaultInactiveSelectedTextBrushId

Gets or sets the default brush id for the inactive selected text.

System_CAPS_pubpropertyDefaultIsHorizontal

Gets or sets the default horizontal state for the text.

System_CAPS_pubpropertyDefaultMultipleLine

If true, the text automatically wraps over more than one line to fit into the width available.

System_CAPS_pubpropertyDefaultPenId

Gets or sets the ID of the default pen to use for the shape field.(Inherited from ShapeField.)

System_CAPS_pubpropertyDefaultReflectParentFocusedState

Gets the child shape field and verifies whether it should receive focus when its parent shape receives focus or sets the ability to reflect the focus state of its parent shape.(Inherited from ShapeField.)

System_CAPS_pubpropertyDefaultReflectParentSelectedState

Gets the child shape field and verifies whether it should be selected when its parent shape is selected or sets the ability to reflect the selection state of its parent shape.(Inherited from ShapeField.)

System_CAPS_pubpropertyDefaultSelectable

Gets the shape field and verifies whether it can be selected by default or sets the default selection state of the shape field.(Inherited from ShapeField.)

System_CAPS_pubpropertyDefaultSelectedBackgroundBrushId

Gets or sets the ID of the default background brush for the shape field.(Inherited from ShapeField.)

System_CAPS_pubpropertyDefaultSelectedTextBrushId

Gets or sets the default brush id for the selected text.

System_CAPS_pubpropertyDefaultStringFormat

Gets or sets the default string format for text drawing.

System_CAPS_pubpropertyDefaultText

Gets or sets the default text to draw.

System_CAPS_pubpropertyDefaultTextBrushId

Gets or sets the default brush id for the text.

System_CAPS_pubpropertyDefaultVisibility

Gets the shape field and verifies whether it appears by default or sets the default visibility of the shape field.(Inherited from ShapeField.)

System_CAPS_pubpropertyDisplayMember

Gets or sets the property name that the display text is associated with.

System_CAPS_pubpropertyDrawBorder

(Do not use - will be changed)

System_CAPS_pubpropertyFillBackground

(Do not use - will be changed)

System_CAPS_pubpropertyName

Gets the name of the shape field.(Inherited from ShapeField.)

NameDescription
System_CAPS_pubmethodAccessibleDoDefaultAction(ShapeElement)

Performs the default action for the accessible object.(Inherited from ShapeField.)

System_CAPS_pubmethodAllowInPlaceEditorAutoSize(ShapeElement)

By default, allow in-place editor to size automatically if the field supports auto-size.(Overrides ShapeField.AllowInPlaceEditorAutoSize(ShapeElement).)

System_CAPS_pubmethodAssociateValueWith(Store, AssociatedPropertyInfo)

Associates the shape field with a domain property that is assigned to a shape element.(Inherited from ShapeField.)

System_CAPS_pubmethodAssociateValueWith(Store, Guid)

Associates the shape field with a domain property that is assigned to a shape element.(Inherited from ShapeField.)

System_CAPS_pubmethodAssociateValueWith(Store, Guid, AssociatedPropertyInfo)

Associates the shape field with a domain property that is assigned to a shape element.(Inherited from ShapeField.)

System_CAPS_pubmethodAssociateVisibilityWith(Store, AssociatedPropertyInfo)

Associates the visibility of the shape field with a domain property that is assigned to a shape element.(Inherited from ShapeField.)

System_CAPS_pubmethodAssociateVisibilityWith(Store, Guid)

Associates the visibility of the shape field with a domain property that is assigned to a shape element.(Inherited from ShapeField.)

System_CAPS_pubmethodAssociateVisibilityWith(Store, Guid, AssociatedPropertyInfo)

Associates the visibility of the shape field with a domain property that is assigned to a shape element.(Inherited from ShapeField.)

System_CAPS_pubmethodCanEditValue(ShapeElement, DiagramClientView)

Returns a value indicating whether the value of this field can be edited.(Overrides ShapeField.CanEditValue(ShapeElement, DiagramClientView).)

System_CAPS_pubmethodCommitPendingEdit(ShapeElement, DiagramClientView)
System_CAPS_pubmethodDoHitTest(PointD, ShapeElement, DiagramHitTestInfo)

Performs a hit test on a specified point in the diagram to determine whether the point is in the bounds of the shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodDoKeyboardNavigation(Keys, DiagramClientView, DiagramItem)

Navigates in the shape field by using the keyboard.(Inherited from ShapeField.)

System_CAPS_pubmethodDoPaint(DiagramPaintEventArgs, ShapeElement)
System_CAPS_pubmethodEditValue(ShapeElement, DiagramClientView)

Invokes the in-place editor.(Overrides ShapeField.EditValue(ShapeElement, DiagramClientView).)

System_CAPS_pubmethodEditValue(ShapeElement, DiagramClientView, PointD)

Invokes the in-place editor, setting the caret using the specified mouse position.(Overrides ShapeField.EditValue(ShapeElement, DiagramClientView, PointD).)

System_CAPS_pubmethodEditValue(ShapeElement, DiagramClientView, String)

Invokes the in-place editor, replacing the text with the specified text.

System_CAPS_pubmethodEquals(Object)

(Inherited from Object.)

System_CAPS_protmethodFinalize()

(Inherited from Object.)

System_CAPS_pubmethodFindFirstChild(ShapeElement, Boolean)

Locates the first child shape field in the parent shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodFindLastChild(ShapeElement, Boolean)

Locates the last child shape field in the parent shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodFindNextChild(DiagramItem, Boolean)

Locates the next child shape field in the parent shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodFindNextInChildSubFields(ShapeElement, DiagramItem, Boolean)

Locates the next child shape field in the navigation sequence.(Inherited from ShapeField.)

System_CAPS_pubmethodFindPreviousChild(DiagramItem, Boolean)

Locates the previous child shape field in the parent shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodFindPreviousInChildSubFields(ShapeElement, DiagramItem, Boolean)

Locates the previous child shape field in the navigation sequence.(Inherited from ShapeField.)

System_CAPS_pubmethodFocused(ShapeElement, DiagramClientView)

Gets the shape field and verifies whether it has focus.(Inherited from ShapeField.)

System_CAPS_pubmethodGetAccessibilityObject(ShapeElement, DiagramClientView)

Gets the accessibility object that is assigned to the shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodGetAccessibleChild(ShapeElement, Int32)

Gets the Accessibility object for the child shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodGetAccessibleChildCount(ShapeElement)

Gets the number of Accessibility objects that are assigned to the parent shape field and its child shape fields.(Inherited from ShapeField.)

System_CAPS_pubmethodGetAccessibleDefaultActionDescription(ShapeElement)

Gets the default purpose of the shape field for the accessible object.(Inherited from ShapeField.)

System_CAPS_pubmethodGetAccessibleDescription(ShapeElement)

Returns the default accessible description for a text field.(Overrides ShapeField.GetAccessibleDescription(ShapeElement).)

System_CAPS_pubmethodGetAccessibleHelp(ShapeElement)

Gets the shape field Help for the accessible object.(Inherited from ShapeField.)

System_CAPS_pubmethodGetAccessibleHelpTopicFileName(ShapeElement)

Gets a topic in the Help for the accessible object.(Inherited from ShapeField.)

System_CAPS_pubmethodGetAccessibleHelpTopicId(ShapeElement)

Gets the ID that is assigned to the Help topic for the accessible object.(Inherited from ShapeField.)

System_CAPS_pubmethodGetAccessibleName(ShapeElement)

Returns the display text as the accessible name.(Overrides ShapeField.GetAccessibleName(ShapeElement).)

System_CAPS_pubmethodGetAccessibleRole(ShapeElement)

Retrieves the accessible role of this ShapeField.(Overrides ShapeField.GetAccessibleRole(ShapeElement).)

System_CAPS_pubmethodGetAccessibleState(ShapeElement, DiagramClientView)

Retrieves the accessible state of this TextField. By default, the TextField is invisible to accessibility clients if the field is not focusable and there is no text to display.(Overrides ShapeField.GetAccessibleState(ShapeElement, DiagramClientView).)

System_CAPS_pubmethodGetAccessibleValue(ShapeElement)

Returns the accessible value.(Overrides ShapeField.GetAccessibleValue(ShapeElement).)

System_CAPS_pubmethodGetActiveInPlaceEditor(ShapeElement, DiagramClientView)

Returns the control for the active in-place editor. This method may return null, in which case no in-place editor is active for this field.(Overrides ShapeField.GetActiveInPlaceEditor(ShapeElement, DiagramClientView).)

System_CAPS_pubmethodGetAutoSize(ShapeElement)

If true, the text field's minimum required size will grow to accomodate the length of the diplay text. Autosizable text fields will still respect the minimum size specified in the AnchoringBehavior.

System_CAPS_pubmethodGetBackgroundBrush(DiagramClientView, ShapeElement, Color)

Gets the brush that draws the background for the shape element to which this shape field is assigned.(Inherited from ShapeField.)

System_CAPS_pubmethodGetBackgroundBrushId(DiagramClientView, ShapeElement)

Gets the ID of the brush that draws the background for the shape element to which this shape field is assigned.(Inherited from ShapeField.)

System_CAPS_pubmethodGetBounds(ShapeElement)

Gets the bounds for the shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodGetCursor(Cursor, DiagramClientView, PointD)

Gets the pointer that appears when the mouse is pointing to the shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodGetDisplayText(ShapeElement)

Gets the text to be displayed by this field.

System_CAPS_pubmethodGetFocusable(ShapeElement)

Gets the shape field and verifies whether it can receive focus.(Inherited from ShapeField.)

System_CAPS_pubmethodGetFont(ShapeElement)

Gets the font to draw with for the specified ShapeElement instance.

System_CAPS_pubmethodGetFontHeight(ShapeElement)

Gets the line spacing of this font (i.e., the height of a line of text) in world units. Line spacing is the ascent + the descent + some recommended extra. The ascent is the height of the character above the baseline, and the descent is the height of the character below the baseline. The extra is below the descent.

System_CAPS_pubmethodGetFontId(ShapeElement)

Gets the id of the font to draw with for the specified ShapeElement instance.

System_CAPS_pubmethodGetHashCode()

(Inherited from Object.)

System_CAPS_pubmethodGetInPlaceEditorBounds(ShapeElement)

Gets the bounds for the in-place editor.(Inherited from ShapeField.)

System_CAPS_pubmethodGetMaximumInPlaceEditorSize(ShapeElement)

By default, we allow the in-place edit control to resize up to 75 characters.(Overrides ShapeField.GetMaximumInPlaceEditorSize(ShapeElement).)

System_CAPS_pubmethodGetMinimumInPlaceEditorSize(ShapeElement)

Minimum in-place editor size is based on minimum width in characters and height in lines.(Overrides ShapeField.GetMinimumInPlaceEditorSize(ShapeElement).)

System_CAPS_pubmethodGetMinimumSize(ShapeElement)

Gets the minimum width and heightfor this ShapeField in world units(Overrides ShapeField.GetMinimumSize(ShapeElement).)

System_CAPS_pubmethodGetMultipleLine(ShapeElement)

If true, the text can wrap onto more than one line to fit the width available.

System_CAPS_pubmethodGetPen(DiagramClientView, ShapeElement, Color)

Gets the pen that draws the shape element to which the shape field is assigned.(Inherited from ShapeField.)

System_CAPS_pubmethodGetPenId(ShapeElement)

Gets the ID of the pen that draws the shape element to which the shape field is assigned.(Inherited from ShapeField.)

System_CAPS_pubmethodGetPotentialMouseAction(MouseButtons, PointD, DiagramHitTestInfo)

Gets the mouse action to activate when the user next clicks a specific point on the diagram.(Inherited from ShapeField.)

System_CAPS_pubmethodGetSelectable(ShapeElement)

Gets the shape field and verifies whether it can be selected.(Inherited from ShapeField.)

System_CAPS_pubmethodGetStringFormat(ShapeElement)

Gets the string format to draw the text with for the specified ShapeElement instance.

System_CAPS_pubmethodGetTextBrush(DiagramClientView, ShapeElement)

Gets the brush to draw the text with for the specified ShapeElement instance.

System_CAPS_pubmethodGetTextBrushId(DiagramClientView, ShapeElement)

Gets the id of the brush to draw the text with for the specified ShapeElement instance.

System_CAPS_pubmethodGetType()

(Inherited from Object.)

System_CAPS_pubmethodGetValue(ShapeElement)

Gets the value for this TextField.(Overrides ShapeField.GetValue(ShapeElement).)

System_CAPS_pubmethodGetValueDomainPropertyInfo(ShapeElement)

Gets the domain property that is assigned to the value in the shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodGetVisible(ShapeElement)

Gets the shape field and verifies whether it appears.(Inherited from ShapeField.)

System_CAPS_pubmethodHasFocusedAppearance(ShapeElement, DiagramClientView)

Gets the shape field and verifies whether it should appear to have the focus.(Inherited from ShapeField.)

System_CAPS_pubmethodHasPendingEdit(ShapeElement, DiagramClientView)

Returns a value indicating whether in-place editing is active, with a commit pending.(Overrides ShapeField.HasPendingEdit(ShapeElement, DiagramClientView).)

System_CAPS_pubmethodHasSelectedAppearance(ShapeElement, DiagramClientView)

Gets the shape field and verifies whether it appears to be selected.(Inherited from ShapeField.)

System_CAPS_pubmethodIsNavigationKey(Char)

Gets the key that the user pressed and verifies whether it can be used to navigate between shape fields.(Inherited from ShapeField.)

System_CAPS_pubmethodIsNavigationKey(Keys)

Gets the keys that the user pressed and verifies whether they can be used to navigate between shape fields.(Inherited from ShapeField.)

System_CAPS_protmethodMeasureDisplayText(String, Font, StringFormat, SizeD)

Helper method to measure given text.

System_CAPS_protmethodMemberwiseClone()

(Inherited from Object.)

System_CAPS_pubmethodNavigateAscend(ShapeElement, SelectedShapesCollection)

Moves the focus to the previous shape field in the navigation sequence for the selected shapes.(Inherited from ShapeField.)

System_CAPS_pubmethodNavigateDescend(ShapeElement, SelectedShapesCollection)

Moves the focus to the next shape field in the navigation sequence for the selected shapes.(Inherited from ShapeField.)

System_CAPS_pubmethodNavigateToFirst(ShapeElement, SelectedShapesCollection)

Moves the focus to the first shape field in the navigation sequence for the selected shapes.(Inherited from ShapeField.)

System_CAPS_pubmethodNavigateToLast(ShapeElement, SelectedShapesCollection)

Moves the focus to the last shape field in the navigation sequence for the selected shapes.(Inherited from ShapeField.)

System_CAPS_pubmethodNavigateToNext(ShapeElement, SelectedShapesCollection)

Moves the focus to the next shape field in the navigation sequence for the selected shapes.(Inherited from ShapeField.)

System_CAPS_pubmethodNavigateToPrevious(ShapeElement, SelectedShapesCollection)

Moves the focus to the previous shape field in the navigation sequence for the selected shapes.(Inherited from ShapeField.)

System_CAPS_protmethodOnBeginEdit(DiagramItemEventArgs)

Alerts listeners when in-place editing has begun.(Inherited from ShapeField.)

System_CAPS_pubmethodOnClick(DiagramPointEventArgs)

Alerts listeners when the user has clicked a shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodOnDoubleClick(DiagramPointEventArgs)

Invokes in-place editing by default.(Overrides ShapeField.OnDoubleClick(DiagramPointEventArgs).)

System_CAPS_protmethodOnEndEdit(DiagramItemEventArgs)

Alerts listeners when in-place editing has completed.(Inherited from ShapeField.)

System_CAPS_pubmethodOnKeyDown(DiagramKeyEventArgs)

Alerts listeners when the user has held down a key when pointing to a shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodOnKeyPress(DiagramKeyPressEventArgs)

Invokes the editor if the field is editable and any alpha-numeric character is typed.(Overrides ShapeField.OnKeyPress(DiagramKeyPressEventArgs).)

System_CAPS_pubmethodOnKeyUp(DiagramKeyEventArgs)

Alerts listeners when the user has released a key when pointing to a shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodOnMouseDown(DiagramMouseEventArgs)

Alerts listeners when the user is holding down the mouse over a shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodOnMouseMove(DiagramMouseEventArgs)

Alerts listeners when the mouse has been moved over a shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodOnMouseUp(DiagramMouseEventArgs)

Alerts listeners when the user has released the mouse button over a shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodOnMouseWheel(DiagramMouseEventArgs)

Alerts listeners when the mouse has been rotated over a shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodSelected(ShapeElement, DiagramClientView)

Gets the shape field and verifies whether it is selected.(Inherited from ShapeField.)

System_CAPS_pubmethodSetSelectionRange(SelectedShapesCollection, DiagramItem, DiagramItem)

Sets the selection to a range of child shape fields.(Inherited from ShapeField.)

System_CAPS_pubmethodSetValue(ShapeElement, Object)

Assigns the specified value to a shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodSetVisible(ShapeElement, Object)

Sets the visibility of the shape field.(Inherited from ShapeField.)

System_CAPS_pubmethodToString()

(Inherited from Object.)

When you define a text decorator in a shape, it is represented by a TextField. For examples of the initialization of TextFields and other ShapeFields, inspect Dsl\GeneratedCode\Shapes.cs in your DSL solution.

A TextField is an object that manages an area within a shape, such as the space assigned to a label. One TextField instance is shared between many shapes of the same class. The TextField instance does not store the text of the label separately for each instance: instead, the GetDisplayText(ShapeElement) method takes the shape as a parameter, and can look up the text dependent on the current state of the shape and its model element.

The default DoPaint() method performs these tasks. This is a simplified presentation of its 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; }

There are several other pairs of Get methods and Default properties, such as DefaultMultipleLine/GetMultipleLine(). You can assign a value to the Default property to change the value for all instances of the shape field. To make the value vary from one shape instance to another, or dependent on the state of the shape or its model element, override the Get method.

If you want to change every instance of this shape field, first find out whether you can set the property in the DSL Definition. For example, you can set font size and style in the Properties window.

If not, then override the InitializeShapeFields method of your shape class, and assign a value to the appropriate Default... property of the text field.

System_CAPS_warningWarning

To override InitializeShapeFields(), you must set the Generates Double Derived property of the shape class to true in the DSL Definition.

In this example, a shape has a text field that will be used for user comments. We want to use the standard comment font. Because it is a standard font from the style set, we can set the default font id:


 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;

To make the appearance vary dependent on the state of a shape or its model element, derive your own subclass of TextField and override one or more Get... methods. You must also override your shape’s InitializeShapeFields method, and replace the instance of the TextField with an instance of your own class.

The following example makes the font of a text field dependent on the state of a Boolean domain property of the shape’s model element.

To run this example code, create a new DSL solution using the Minimal Language template. Add a Boolean domain property AlternateState to the ExampleElement domain class. Add an icon decorator to the ExampleShape class, and set its image to a bitmap file. Click Transform All Templates. Add a new code file in the DSL project, and insert the following code.

To test the code, press F5 and, in the debugging solution, open a sample diagram. The default state of the icon should appear. Select the shape and in the Properties window, change the value of the AlternateState property. The font of the element name should change.

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);
    }

  }


The preceding example shows how you can change the text field to any font that is available. However, a preferable method is to change it to one of a set of styles that is associated with the shape or with the application. To do this, you override GetFontId or GetTextBrushId().

Alternatively, consider changing the style set of your shape by overriding InitializeResources. This has the effect of changing the fonts and brushes for all of the shape fields.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
Show: