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 命名空间