Freigeben über


AddRule-Klasse

Stellt eine Regel dar, die aufgerufen wird, wenn ein Objekt im Modell hinzugefügt wird.

Vererbungshierarchie

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

Namespace:  Microsoft.VisualStudio.Modeling
Assembly:  Microsoft.VisualStudio.Modeling.Sdk.11.0 (in Microsoft.VisualStudio.Modeling.Sdk.11.0.dll)

Syntax

'Declaration
Public MustInherit Class AddRule _
    Inherits Rule
public abstract class AddRule : Rule

Der AddRule-Typ macht die folgenden Member verfügbar.

Konstruktoren

  Name Beschreibung
Geschützte Methode AddRule Initialisiert eine Instanz der AddRule-Klasse.

Zum Seitenanfang

Eigenschaften

  Name Beschreibung
Öffentliche Eigenschaft FireBefore true , wenn diese Regel ausgeführt wird, bevor die Änderung stattfindet. (Von Rule geerbt.)
Öffentliche Eigenschaft FireImmediately true , wenn diese Regel die Änderung sofort ausgeführt werden, tritt auf. (Von Rule geerbt.)
Öffentliche Eigenschaft FireOnLocalCommit true , wenn diese Regel wann die Commite der aktuellen Transaktion ausgeführt wird. (Von Rule geerbt.)
Öffentliche Eigenschaft FireOnTopLevelCommit true , wenn diese Regel wann die transaktionale commite der obersten Ebene ausgeführt wird. (Von Rule geerbt.)
Öffentliche Eigenschaft FireTime Ruft ab oder legt fest, ob die Regel ausgeführt werden soll.Normalerweise festgelegt durch das RuleOn-Attribut. (Von Rule geerbt.)
Öffentliche Eigenschaft IsEnabled Ruft ab oder legt fest, ob die Regel aktiviert ist.Richten Sie normalerweise standardmäßig aus, aber Sie können es auf " false " im RuleOn-Attribut initialisieren. (Von Rule geerbt.)
Öffentliche Eigenschaft Priority Ruft die Priorität ab, die der Regel zugewiesene.Hilfen, um die Reihenfolge zu bestimmen, in der Regel am Ende einer Transaktion ausgeführt werden. (Von Rule geerbt.)

Zum Seitenanfang

Methoden

  Name Beschreibung
Öffentliche Methode CompareTo(Object) Vergleicht die Regel mit einem anderen Objekt. (Von Rule geerbt.)
Öffentliche Methode CompareTo(Rule) Vergleicht die Regel an eine andere Regel durch ihre IDs. (Von Rule geerbt.)
Öffentliche Methode ElementAdded Alarmiert Listener, dass eine Regel verwendet wurde.
Öffentliche Methode Equals(Object) Überprüft, ob die Regel gleich dem Wert eines anderen Objekts ist. (Von Rule geerbt.)
Öffentliche Methode Equals(Rule) Überprüft, ob eine weitere Regel eine Regel gleich sind. (Von Rule geerbt.)
Geschützte Methode Finalize Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche Methode GetHashCode Ruft den Hashcode für die Regel ab. (Von Rule geerbt.)
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte Methode MemberwiseClone Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche Methode ToString Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)

Zum Seitenanfang

Hinweise

Regeln dieses Typs wird ausgelöst, wenn ein Element, eine Beziehung, eine Form, ein Konnektor oder ein Diagramm zum Modell hinzugefügt wird.

Ein RuleOnAttribute-Attribut, das auf die Klasse platziert wird, gibt an, welchen Objekttyp die Regel gearbeitet und wenn die Regel auslösen soll.

In der Regel wird aufgerufen, wenn das Objekt des angegebenen Typs zum Modell hinzugefügt wird, ob es in der Benutzeroberfläche oder programmgesteuert hinzugefügt wird.

In der Regel wird auch ausgelöst, wenn ein Element der Datei geladen wird.Wenn Sie vermeiden möchten, zu reagieren, wenn dies geschieht, fügen Sie diesen Code in ElementAdded ein:

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

Weitere Informationen und Beispiele finden Sie unter Regeln propagieren Änderungen im Modell.

Beispiele

Im folgenden Beispiel wird eine Regel definiert, die von AddRuleberechnet.Dieses Regelsätze die Position einer Form, wenn sie dem Diagramm hinzugefügt wird.

Das RuleOn-Attribut gibt an, dass die Regel auslösen soll, wenn die Transaktion commite der obersten Ebene.

[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;
    }
  }
}

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Siehe auch

Referenz

Microsoft.VisualStudio.Modeling-Namespace

Weitere Ressourcen

Regeln propagieren Änderungen im Modell