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.11.0(在 Microsoft.VisualStudio.Modeling.Sdk.Diagrams.11.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,文本字段的最小值报告范围将成长为容纳该 diplay 文本的长度。Autosizable 文本字段将允许在 AnchoringBehavior 指定的最小尺寸。
公共属性 DefaultBackgroundBrushId 获取或设置默认画笔的 ID 绘制形状字段的背景。 (继承自 ShapeField。)
公共属性 DefaultCommitOnEscape 获取或设置一个转义键是否的值进行编辑。如果为 true, enter 键将用作 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 获取分配给形状字段的可访问性对象。 (继承自 ShapeField。)
公共方法 GetAccessibleChild 获取子形状字段的可访问性对象。 (继承自 ShapeField。)
公共方法 GetAccessibleChildCount 获取的可访问性对象数分配给父形状字段及其子形状字段。 (继承自 ShapeField。)
公共方法 GetAccessibleDefaultActionDescription 获取形状字段的默认值目的可访问对象的。 (继承自 ShapeField。)
公共方法 GetAccessibleDescription 返回文本字段的默认值可访问的说明。 (重写 ShapeField.GetAccessibleDescription(ShapeElement)。)
公共方法 GetAccessibleHelp 获取可访问对象的形状字段帮助。 (继承自 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,文本字段所需的最小大小将成长为容纳该 diplay 文本的长度。Autosizable 文本字段将允许在 AnchoringBehavior 指定的最小尺寸。
公共方法 GetBackgroundBrush 获取绘制形状元素的背景形状字段分配的画笔。 (继承自 ShapeField。)
公共方法 GetBackgroundBrushId 获取绘制形状元素的背景形状字段分配画笔的 ID。 (继承自 ShapeField。)
公共方法 GetBounds 获取形状字段的区域。 (继承自 ShapeField。)
公共方法 GetCursor 获取出现的指针当鼠标指向形状字段。 (继承自 ShapeField。)
公共方法 GetDisplayText 获取文本由此字段显示。
公共方法 GetFocusable 获取形状字段并验证它是否可以接收焦点。 (继承自 ShapeField。)
公共方法 GetFont 使字体绘制带有指定的 ShapeElement 实例。
公共方法 GetFontHeight 获取字体 (即,文本行的高度行距) 在世界单元。行距是引发 + + 放置一些建议的额外。引发是字符的高度 (以基线上的,因此,它们是字符的高度 (以基线下。额外放置在下。
公共方法 GetFontId 获取字体的 ID 绘制带有指定的 ShapeElement 实例。
公共方法 GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
公共方法 GetInPlaceEditorBounds 获取一个就地编辑区域。 (继承自 ShapeField。)
公共方法 GetMaximumInPlaceEditorSize 默认情况下,我们允许就地编辑控件调整 75 个字符。 (重写 ShapeField.GetMaximumInPlaceEditorSize(ShapeElement)。)
公共方法 GetMinimumInPlaceEditorSize 最小就地编辑区域根据字符的最小在行的宽度和高度。 (重写 ShapeField.GetMinimumInPlaceEditorSize(ShapeElement)。)
公共方法 GetMinimumSize 获取最小宽度和 heightfor 世界上的单元此 ShapeField (重写 ShapeField.GetMinimumSize(ShapeElement)。)
公共方法 GetMultipleLine 如果为 true,文本可以包装在多行上适合提供给的宽度。
公共方法 GetPen 获取绘制形状元素形状字段分配的钢笔。 (继承自 ShapeField。)
公共方法 GetPenId 获取绘制形状元素形状字段分配钢笔的 ID。 (继承自 ShapeField。)
公共方法 GetPotentialMouseAction 获取鼠标事件激活接下来用户何时在关系图上单击特定点。 (继承自 ShapeField。)
公共方法 GetSelectable 获取形状字段并验证它是否能选择。 (继承自 ShapeField。)
公共方法 GetStringFormat 获取字符串格式绘制具有指定的 ShapeElement 实例的文本。
公共方法 GetTextBrush 获取画笔绘制具有指定的 ShapeElement 实例的文本。
公共方法 GetTextBrushId 获取画笔的 ID 绘制具有指定的 ShapeElement 实例的文本。
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
公共方法 GetValue 获取此 TextField 的值。 (重写 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 类,并将其图像到位图文件。 单击 转换所有模板。 添加在 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