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.12.0 (Microsoft.VisualStudio.Modeling.Sdk.12.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 属性で false に初期化することもできます。 (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 名前空間