AddRule-Klasse
Stellt eine Regel dar, die aufgerufen wird, wenn ein Objekt dem 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.12.0 (in Microsoft.VisualStudio.Modeling.Sdk.12.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 | |
---|---|---|
AddRule | Initialisiert eine Instanz der AddRule-Klasse. |
Zum Seitenanfang
Eigenschaften
Name | Beschreibung | |
---|---|---|
FireBefore | true , wenn diese Regel ausgeführt wird, bevor die Änderung stattfindet. (Von Rule geerbt.) | |
FireImmediately | true , wenn diese Regel sofort ausgeführt wird, wenn die Änderung auftritt. (Von Rule geerbt.) | |
FireOnLocalCommit | true , wenn diese Regel ausgeführt wird, wenn die aktuelle Transaktion ausgeführt wird. (Von Rule geerbt.) | |
FireOnTopLevelCommit | true , wenn diese Regel ausgeführt wird, wenn die Transaktion der obersten Ebene ausgeführt wird. (Von Rule geerbt.) | |
FireTime | Ruft ab oder legt fest, wann die Regel ausgeführt werden soll.Normalerweise festgelegt durch das RuleOn-Attribut. (Von Rule geerbt.) | |
IsEnabled | Übernimmt oder bestimmt, ob die Regel aktiviert ist.Normalerweise standardmäßig "true", Sie können es jedoch als "false" im RuleOn-Attribut initialisieren. (Von Rule geerbt.) | |
Priority | Ruft die Priorität ab, die der Regel zugewiesen wird.Hilft die Reihenfolge zu bestimmen, in der Regeln am Ende einer Transaktion ausgeführt werden. (Von Rule geerbt.) |
Zum Seitenanfang
Methoden
Name | Beschreibung | |
---|---|---|
CompareTo(Object) | Vergleicht die Regel mit einem anderen Objekt. (Von Rule geerbt.) | |
CompareTo(Rule) | Vergleicht die Regel mit einer anderen Regel durch ihre IDs. (Von Rule geerbt.) | |
ElementAdded | Alarmiert Listener, dass eine Regel verwendet wurde. | |
Equals(Object) | Überprüft, ob die Regel gleich dem Wert eines anderen Objekts ist. (Von Rule geerbt.) | |
Equals(Rule) | Überprüft, ob eine Regel einer anderen Regel gleich ist. (Von Rule geerbt.) | |
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.) | |
GetHashCode | Ruft den Hashcode für die Regel ab. (Von Rule geerbt.) | |
GetType | Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.) | |
MemberwiseClone | Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.) | |
ToString | Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.) |
Zum Seitenanfang
Hinweise
Regeln dieses Typs werden ausgelöst, wenn ein Element, eine Beziehung, eine Form, ein Konnektor oder ein Diagramm mit dem Modell hinzugefügt wird.
Ein RuleOnAttribute-Attribut, das auf die Klasse platziert wird, gibt an, welchen Objekttyp die Regel gearbeitet und wenn die Regel ausgelöst werden soll.
Die Regel wird aufgerufen, wenn das Objekt des angegebenen Typs zum Modell hinzugefügt wird, ob es zur Benutzeroberfläche oder programmgesteuert hinzugefügt wird.
Die Regel wird auch ausgelöst, wenn ein Element aus einer Datei geladen wird. Wenn Sie vermeiden möchten, zu reagieren, wenn dies geschieht, schließen Sie den Code im 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, die von AddRule abgeleitet. Dies Regelsätze die Position einer Form, wenn sie dem Diagramm hinzugefügt wird.
Das RuleOn-Attribut gibt an, dass die Regel ausgelöst sollte wenn die Transaktionscommits 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