次の方法で共有


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 名前空間

その他の技術情報

規則によって変更内容がモデル内に反映される