TextField 类

轻型对象表现部分能显示文本标签或区域的形状。

继承层次结构

System.Object
  Microsoft.VisualStudio.Modeling.Diagrams.ShapeField
    Microsoft.VisualStudio.Modeling.Diagrams.TextField
      Microsoft.VisualStudio.Modeling.Diagrams.LabelTextField

命名空间:  Microsoft.VisualStudio.Modeling.Diagrams
程序集:  Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0(在 Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0.dll 中)

语法

声明
Public Class TextField _
    Inherits ShapeField
public class TextField : ShapeField

TextField 类型公开以下成员。

构造函数

  名称 说明
公共方法 TextField 初始化 TextField 类的新实例。

页首

属性

  名称 说明
公共属性 AnchoringBehavior 描述该字段的内容应该如何放置和调整有关父 ShapeElement 大小。 (继承自 ShapeField。)
公共属性 DefaultAccessibleDescription 获取或设置默认可访问说明。 (继承自 ShapeField。)
公共属性 DefaultAccessibleName 获取或设置可访问对象的形状字段的默认名称。 (继承自 ShapeField。)
公共属性 DefaultAccessibleState 为可访问对象获取形状字段的默认状态。 (继承自 ShapeField。)
公共属性 DefaultAutoSize 如果为 true,文本字段的最小的报告大小将增大为可容纳显示文本长度。Autosizable 文本字段仍将与 AnchoringBehavior 中指定的最小大小相关。
公共属性 DefaultBackgroundBrushId 获取或设置用于绘制形状字段的背景的默认画笔的 ID。 (继承自 ShapeField。)
公共属性 DefaultCommitOnEscape 获取或设置指示 Escape 键是否提交编辑的值。如果为 true,输入键将作为就地编辑的 CRLF。
公共属性 DefaultFocusable 获取形状字段并验证它是否可以接收焦点,或者对形状字段提供接收焦点的功能。 (继承自 ShapeField。)
公共属性 DefaultFontId 获取或设置默认字体 ID。
公共属性 DefaultInactiveSelectedBackgroundBrushId 获取或设置形状字段的默认背景画笔的 ID。 (继承自 ShapeField。)
公共属性 DefaultInactiveSelectedTextBrushId 获取或设置停用选定文本的默认画笔 ID。
公共属性 DefaultIsHorizontal 获取或设置文本的默认水平状态。
公共属性 DefaultMultipleLine 如果为 true,文字自动换行以适应可用的宽度。
公共属性 DefaultPenId 获取或设置用于形状字段的默认钢笔的 ID。 (继承自 ShapeField。)
公共属性 DefaultReflectParentFocusedState 获取子形状字段,并确认在其父形状接收焦点或将功能设置为反射其父形状的焦点状态时,它是否应接收焦点。 (继承自 ShapeField。)
公共属性 DefaultReflectParentSelectedState 获取子形状字段,并确认在选中其父形状或将功能设置为反射其父形状的选中状态时,是否应选中它。 (继承自 ShapeField。)
公共属性 DefaultSelectable 获取形状字段并验证是否选择默认情况下或设置形状字段的默认选择状态。 (继承自 ShapeField。)
公共属性 DefaultSelectedBackgroundBrushId 获取或设置形状字段的默认背景画笔的 ID。 (继承自 ShapeField。)
公共属性 DefaultSelectedTextBrushId 获取或设置选定文本的默认画笔 ID。
公共属性 DefaultStringFormat 获取或设置文本绘制的默认字符串格式。
公共属性 DefaultText 获取或设置要绘制的默认文本。
公共属性 DefaultTextBrushId 获取或设置文本的默认画笔 ID。
公共属性 DefaultVisibility 获取形状字段并验证是否默认情况下显示或设置形状字段的默认可见性。 (继承自 ShapeField。)
公共属性 DisplayMember 获取或设置显示文本与之关联的属性名称。
公共属性 DrawBorder (不要使用 - 将更改)
公共属性 FillBackground (不要使用 - 将更改)
公共属性 Name 获取形状字段的名称。 (继承自 ShapeField。)

页首

方法

  名称 说明
公共方法 AccessibleDoDefaultAction 执行该辅助性对象的默认操作。 (继承自 ShapeField。)
公共方法 AllowInPlaceEditorAutoSize 默认情况下,如果该字段支持自动调整大小,则允许内置编辑器自动调整大小。 (重写 ShapeField.AllowInPlaceEditorAutoSize(ShapeElement)。)
公共方法 AssociateValueWith(Store, AssociatedPropertyInfo) 将形状字段与分配到形状元素的域属性关联。 (继承自 ShapeField。)
公共方法 AssociateValueWith(Store, Guid) 将形状字段与分配到形状元素的域属性关联。 (继承自 ShapeField。)
公共方法 AssociateValueWith(Store, Guid, AssociatedPropertyInfo) 将形状字段与分配到形状元素的域属性关联。 (继承自 ShapeField。)
公共方法 AssociateVisibilityWith(Store, AssociatedPropertyInfo) 将形状字段的可见性与分配到形状元素的域属性关联。 (继承自 ShapeField。)
公共方法 AssociateVisibilityWith(Store, Guid) 将形状字段的可见性与分配到形状元素的域属性关联。 (继承自 ShapeField。)
公共方法 AssociateVisibilityWith(Store, Guid, AssociatedPropertyInfo) 将形状字段的可见性与分配到形状元素的域属性关联。 (继承自 ShapeField。)
公共方法 CanEditValue 返回指示此字段的值是否可编辑的值。 (重写 ShapeField.CanEditValue(ShapeElement, DiagramClientView)。)
公共方法 CommitPendingEdit 提交挂起的编辑。 (重写 ShapeField.CommitPendingEdit(ShapeElement, DiagramClientView)。)
公共方法 DoHitTest 在关系图上指定的点执行命中测试以确定点是否位于形状字段的边界。 (继承自 ShapeField。)
公共方法 DoKeyboardNavigation 在形状段用此键盘导航。 (继承自 ShapeField。)
公共方法 DoPaint 绘制文本字段。 (重写 ShapeField.DoPaint(DiagramPaintEventArgs, ShapeElement)。)
公共方法 EditValue(ShapeElement, DiagramClientView) 调用内置编辑器。 (重写 ShapeField.EditValue(ShapeElement, DiagramClientView)。)
公共方法 EditValue(ShapeElement, DiagramClientView, PointD) 调用内置编辑器,使用指定鼠标位置插入符号。 (重写 ShapeField.EditValue(ShapeElement, DiagramClientView, PointD)。)
公共方法 EditValue(ShapeElement, DiagramClientView, String) 调用内置编辑器,用指定的文本替换此文本。
公共方法 Equals 确定指定的对象是否等于当前对象。 (继承自 Object。)
受保护的方法 Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法 FindFirstChild 找到在父形状字段中的第一个子形状字段。 (继承自 ShapeField。)
公共方法 FindLastChild 找到在父形状字段中的最后一个子形状字段。 (继承自 ShapeField。)
公共方法 FindNextChild 找到在父形状字段中的下一个子形状字段。 (继承自 ShapeField。)
公共方法 FindNextInChildSubFields 找到在导航序列中的下一个子形状字段。 (继承自 ShapeField。)
公共方法 FindPreviousChild 找到在父形状字段中的上一个子形状字段。 (继承自 ShapeField。)
公共方法 FindPreviousInChildSubFields 找到在导航序列中的上一个子形状字段。 (继承自 ShapeField。)
公共方法 Focused 获取形状字段并验证是否具有焦点。 (继承自 ShapeField。)
公共方法 GetAccessibilityObject 获取分配给形状字段的 accessibility 对象。 (继承自 ShapeField。)
公共方法 GetAccessibleChild 获取子形状字段的 Accessibility 对象。 (继承自 ShapeField。)
公共方法 GetAccessibleChildCount 获取分配给父级形状字段和子形状字段的辅助功能对象的数目。 (继承自 ShapeField。)
公共方法 GetAccessibleDefaultActionDescription 为可访问对象获取形状字段的默认用途。 (继承自 ShapeField。)
公共方法 GetAccessibleDescription 返回文本字段的默认辅助性说明。 (重写 ShapeField.GetAccessibleDescription(ShapeElement)。)
公共方法 GetAccessibleHelp 获取辅助性对象的形状字段 Help。 (继承自 ShapeField。)
公共方法 GetAccessibleHelpTopicFileName 为可访问的对象在“帮助”中获取主题。 (继承自 ShapeField。)
公共方法 GetAccessibleHelpTopicId 获取可访问对象的帮助主题 ID。 (继承自 ShapeField。)
公共方法 GetAccessibleName 返回显示文本作为辅助性名称。 (重写 ShapeField.GetAccessibleName(ShapeElement)。)
公共方法 GetAccessibleRole 检索此 ShapeField 的辅助性角色。 (重写 ShapeField.GetAccessibleRole(ShapeElement)。)
公共方法 GetAccessibleState 检索此 TextField 的辅助性状态。默认情况下,如果该字段不可设定焦点,并且不显示的文本,则 TextField 对辅助功能的客户端不可见。 (重写 ShapeField.GetAccessibleState(ShapeElement, DiagramClientView)。)
公共方法 GetAccessibleValue 返回辅助功能值。 (重写 ShapeField.GetAccessibleValue(ShapeElement)。)
公共方法 GetActiveInPlaceEditor 返回活动就地编辑器的控件。此方法可以返回 null,在这种情况下本字段没有活动的就位编辑器。 (重写 ShapeField.GetActiveInPlaceEditor(ShapeElement, DiagramClientView)。)
公共方法 GetAutoSize 如果为 true,文本字段的最小的需求大小将增大为可容纳显示文本长度。Autosizable 文本字段仍将与 AnchoringBehavior 中指定的最小大小相关。
公共方法 GetBackgroundBrush 获取将绘制此形状字段将分配到的形状元素的背景的画笔。 (继承自 ShapeField。)
公共方法 GetBackgroundBrushId 获取一个画笔 ID,该画笔被用来绘制当前形状被分配到的形状的背景。 (继承自 ShapeField。)
公共方法 GetBounds 获取形状字段的边界。 (继承自 ShapeField。)
公共方法 GetCursor 获取当鼠标指向形状字段时显示的指针。 (继承自 ShapeField。)
公共方法 GetDisplayText 获取由此字段显示的文本。
公共方法 GetFocusable 获取形状字段并验证它是否可以接收该焦点。 (继承自 ShapeField。)
公共方法 GetFont 获取指定的 ShapeElement 实例的绘制字体。
公共方法 GetFontHeight 获取字体 (也就是说,文本行的高度) 位于世界行距单位。行距是升高值 + 降低值 + 某些额外建议。升高值是在基线上面的字符的高度,而降低值是在基线下面的字符的高度。多余的在降低值之下。
公共方法 GetFontId 获取指定的 ShapeElement 实例的绘制字体 ID。
公共方法 GetHashCode 作为默认哈希函数。 (继承自 Object。)
公共方法 GetInPlaceEditorBounds 获取就绪编辑器的边界。 (继承自 ShapeField。)
公共方法 GetMaximumInPlaceEditorSize 默认情况下,我们允许就地编辑控件调大至 75 个字符。 (重写 ShapeField.GetMaximumInPlaceEditorSize(ShapeElement)。)
公共方法 GetMinimumInPlaceEditorSize 最小内置编辑器大小是基于字符的最小宽度和行的高度。 (重写 ShapeField.GetMinimumInPlaceEditorSize(ShapeElement)。)
公共方法 GetMinimumSize 获取 ShapeField 的最小宽度和高度,单位为世界单位 (重写 ShapeField.GetMinimumSize(ShapeElement)。)
公共方法 GetMultipleLine 如果为 true,文字可以换行以适应可用的宽度。
公共方法 GetPen 获取用于绘制形状字段被分配到的形状元素的钢笔。 (继承自 ShapeField。)
公共方法 GetPenId 获取形状字段被指定到的形状要素的笔 ID 。 (继承自 ShapeField。)
公共方法 GetPotentialMouseAction 在用户接下来单击关系图上特定点时,获取引起该事件的鼠标操作并将其激活。 (继承自 ShapeField。)
公共方法 GetSelectable 获取形状字段并验证它是否可以选择。 (继承自 ShapeField。)
公共方法 GetStringFormat 获取用于绘制指定 ShapeElement 实例文本的字符串格式。
公共方法 GetTextBrush 获取用于绘制指定 ShapeElement 实例的文本的画笔。
公共方法 GetTextBrushId 获取用于绘制指定 ShapeElement 实例文本的画笔 ID。
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
公共方法 GetValue 获取此文本字段的值。 (重写 ShapeField.GetValue(ShapeElement)。)
公共方法 GetValueDomainPropertyInfo 获取向形状字段中的值赋予的域属性。 (继承自 ShapeField。)
公共方法 GetVisible 获取形状字段并验证是否显示。 (继承自 ShapeField。)
公共方法 HasFocusedAppearance 获取形状字段并验证它是否应显示一个具有焦点。 (继承自 ShapeField。)
公共方法 HasPendingEdit 使用提交挂起返回指示就地编辑是否处于活动状态的值。 (重写 ShapeField.HasPendingEdit(ShapeElement, DiagramClientView)。)
公共方法 HasSelectedAppearance 获取形状字段并验证是否显示选中。 (继承自 ShapeField。)
公共方法 IsNavigationKey(Char) 获取用户按下的键并验证它是否可用于形状之间字段的导航。 (继承自 ShapeField。)
公共方法 IsNavigationKey(Keys) 获取用户按下的按键组合并验证它们是否可用于形状之间字段的导航。 (继承自 ShapeField。)
受保护的方法 MeasureDisplayText 要度量给定文本的帮助器方法。
受保护的方法 MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
公共方法 NavigateAscend 移动焦点至用于选定形状的导航序列的上一个形状字段。 (继承自 ShapeField。)
公共方法 NavigateDescend 移动焦点至用于选定形状的导航序列的下一个形状字段。 (继承自 ShapeField。)
公共方法 NavigateToFirst 移动焦点至用于选定形状的导航序列的第一个形状字段。 (继承自 ShapeField。)
公共方法 NavigateToLast 移动 焦点至用于选定形状的导航序列的最后的形状字段。 (继承自 ShapeField。)
公共方法 NavigateToNext 移动焦点至用于选定形状的导航序列的下一个形状字段。 (继承自 ShapeField。)
公共方法 NavigateToPrevious 移动焦点至用于选定形状的导航序列的上一个形状字段。 (继承自 ShapeField。)
受保护的方法 OnBeginEdit 当就地编辑启动时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnClick 当用户单击形状字段时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnDoubleClick 调用默认情况下就地编辑。 (重写 ShapeField.OnDoubleClick(DiagramPointEventArgs)。)
受保护的方法 OnEndEdit 当就地编辑完成时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnKeyDown 当指向形状字段,用户按住了密钥时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnKeyPress 如果该字段可编辑而且任意字母数字字符已类型化,则调用编辑器。 (重写 ShapeField.OnKeyPress(DiagramKeyPressEventArgs)。)
公共方法 OnKeyUp 当指向形状字段,用户释放了密钥时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnMouseDown 用户按住鼠标按钮到形状字段上时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnMouseMove 鼠标移动到形状字段上时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnMouseUp 用户释放鼠标按钮到形状字段上时,警报侦听器。 (继承自 ShapeField。)
公共方法 OnMouseWheel 鼠标旋转到形状字段上时,警报侦听器。 (继承自 ShapeField。)
公共方法 Selected 获取形状字段并验证它是否已选中。 (继承自 ShapeField。)
公共方法 SetSelectionRange 设置该选择到子形状字段的范围。 (继承自 ShapeField。)
公共方法 SetValue 将指定的参数赋予形状字段。 (继承自 ShapeField。)
公共方法 SetVisible 设置形状字段的可见性。 (继承自 ShapeField。)
公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)

页首

备注

当定义形状时文本修饰器,那么 TextField 表示。 有关 TextFields 和其他 ShapeFields 的初始化的示例,请检查 Dsl\GeneratedCode\Shapes.cs in your DSL 解决方案。

TextField 是在管理形状内的区域的对象分配空间,如为标签。 一 TextField 实例之间共享同一类的多个形状之间。 TextField 实例对每个实例分别存储的标签文本:相反,GetDisplayText(ShapeElement) 方法将形状用作参数,并可以查阅形状及其模型元素的当前状态的文本项。

文本字段的外观如何确定的

默认 DoPaint() 执行这些任务的方法。 这是其代码的一种简化的表示:

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

有若干对其他 Get 方法和 Default 属性,如 DefaultMultipleLine/GetMultipleLine()。 可以赋值给默认属性更改形状字段的所有实例的值。 形状从一实例若要使值改变到另一个也依赖于形状或其模型元素的状态,请重写 Get 方法。

静态的自定义

如果希望更改此字段的每个形状实例,第一查看可以设置在 DSL 定义的属性。 例如,可设置字号和样式在"属性"窗口。

否则,然后重写形状类的 InitializeShapeFields 方法,并将值赋予文本字段的相应 Default... 属性。

警告

若要改写 InitializeShapeFields(),您必须将 生成派生的双重 属性类形状以 DSL 定义的 true。

在此示例中,则形状为用户注释要使用的文本字段。 我们需要标准注释使用字体。 由于是从样式集的标准字体,我们可以将默认字体 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;

动态的自定义

若要受到更改依赖于形状或其模型元素的状态,派生自己的 TextField 的子类并重写一个或多个 Get... 方法。 您还必须重写 InitializeShapeFields 形状的方法,并用自己类的实例替换 TextField 的实例。

下面的示例使字体文本字段依赖于形状的布尔域模型元素的属性的状态。

使用最小的语言模板,若要运行此代码示例,请创建新 DSL 的解决方案。 将布尔域属性 AlternateState 到 ExampleElement 域类。 将图标添加修饰器。ExampleShape 类,并将其添加到图像位图文件。 Click “转换所有模板”。 DSL 添加到项目的代码文件,并粘贴下面的代码。

若要测试您的代码,请按 F5,另外,在调试解决方案,打开示例关系图。 图标的默认状态应显示。 选择形状并在属性窗口,更改值 AlternateState 属性。 元素名称应的字体更改。

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

  }

样式集

上例演示如何更改文本字段绑定到的所有可用字体。 但是,更好的方法将它更改为与形状或与应用程序一个一组样式。 为此,请重写 GetFontId 或 GetTextBrushId()。

或者,请考虑更改形状的一组样式通过重写 InitializeResources。 这有更改字体和画笔效果的任何形状字段。

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

请参阅

参考

Microsoft.VisualStudio.Modeling.Diagrams 命名空间

InitializeShapeFields

StyleSet

ShapeField