AddRule 类

表示要调用的规则,当对象添加到设计时。

继承层次结构

System.Object
  Microsoft.VisualStudio.Modeling.Rule
    Microsoft.VisualStudio.Modeling.AddRule
      Microsoft.VisualStudio.Modeling.Diagrams.CommentShapeAddRule
      Microsoft.VisualStudio.Modeling.Diagrams.NodeShape.ExpandCollapseNodeShapeWhenAddedToDiagramRule
      Microsoft.VisualStudio.Modeling.Diagrams.ParentShapeContainsNestedChildShapesAddRule
      Microsoft.VisualStudio.Modeling.Diagrams.ParentShapeHasRelativeChildShapesAddRule
      Microsoft.VisualStudio.Modeling.Diagrams.ShapeElementAddRule
      Microsoft.VisualStudio.Modeling.ElementDeserializedRule

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

语法

声明
Public MustInherit Class AddRule _
    Inherits Rule
public abstract class AddRule : Rule

AddRule 类型公开以下成员。

构造函数

  名称 说明
受保护的方法 AddRule 初始化 AddRule 类的实例。

页首

属性

  名称 说明
公共属性 FireBefore true ,如果此规则,都将执行发生更改之前。 (继承自 Rule。)
公共属性 FireImmediately true ,则此规则将立即执行发生更改。 (继承自 Rule。)
公共属性 FireOnLocalCommit true ,如果要将此规则执行当前事务时间。 (继承自 Rule。)
公共属性 FireOnTopLevelCommit true ,如果要将此规则执行顶级事务时间。 (继承自 Rule。)
公共属性 FireTime ,在规则应执行时,获取或设置。通常设置由 RuleOn 属性。 (继承自 Rule。)
公共属性 IsEnabled 获取或设置规则是否启用。通常则为 true 默认情况下,但是,您可以初始化到错误。 RuleOn 属性。 (继承自 Rule。)
公共属性 Priority 获取分配给规则的优先级。帮助确定规则是在事务末尾的顺序。 (继承自 Rule。)

页首

方法

  名称 说明
公共方法 CompareTo(Object) 与其他对象进行比较规则。 (继承自 Rule。)
公共方法 CompareTo(Rule) 与其他规则比较规则按其 ID。 (继承自 Rule。)
公共方法 ElementAdded 警报侦听器使用的规则。
公共方法 Equals(Object) 验证规则是否与另一个对象相等。 (继承自 Rule。)
公共方法 Equals(Rule) 验证规则是否与另一规则相等。 (继承自 Rule。)
受保护的方法 Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法 GetHashCode 获取规则的哈希代码。 (继承自 Rule。)
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
受保护的方法 MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)

页首

备注

,当元素、关系、形状、链接或关系图添加到设计时,此类型规则来触发。

在类中的 RuleOnAttribute 属性指示类型的对象规则工作,所以,当规则应激发时。

规则调用,当指定类型的对象添加到设计时,是否在 UI 中添加或编程。

,将元素从文件时,加载规则也会触发。 如果要避免响应,发生这种情况时,应包括此代码在 ElementAdded:

// Ignore this call if we're currently loading a model:
    if (e.ModelElement.Store.TransactionManager
          .CurrentTransaction.IsSerializing) 
       return;

有关更多信息和示例,请参见规则在模型内部传播更改

示例

在下面的示例中,从 AddRule派生的规则定义。 ,在添加到关系图时,此规则集形状的位置。

RuleOn 属性指示规则应激发顶级事务时间。

[RuleOn(typeof(ParentShapeContainsNestedChildShapes), FireTime = TimeToFire.TopLevelCommit)]
public class ShapeAddedToDiagramRule : AddRule
{
  private double offset = 0.25;
  private PointD location = new PointD(0.25, 0.25);

  public override void ElementAdded(ElementAddedEventArgs e)
  {
    Shape shape = null;
    ParentShapeContainsNestedChildShapes nestedLink = e.ModelElement as ParentShapeContainsNestedChildShapes;
    if (nestedLink != null)
    {
      shape = nestedLink.NestedChildShapes as Shape;
    }

    if (shape != null && shape.Diagram != null)
    {
      // Expand the shape and move it to its new position
      shape.IsExpanded = true;
      shape.Location = new PointD(location.X, location.Y + offset);

      // Adjust the height offset for the size of the shape
      // (I'm assuming that the DefaultContainerMargin
      // provides for a decent spacing between the shapes)
      offset += shape.Size.Height + shape.Diagram.DefaultContainerMargin.Height;
    }
  }
}

线程安全

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

请参见

参考

Microsoft.VisualStudio.Modeling 命名空间

其他资源

规则在模型内部传播更改