Partager via


AddRule, classe

Représente une règle qui est appelée lorsqu'un objet est ajouté au modèle.

Hiérarchie d'héritage

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

Espace de noms :  Microsoft.VisualStudio.Modeling
Assembly :  Microsoft.VisualStudio.Modeling.Sdk.12.0 (dans Microsoft.VisualStudio.Modeling.Sdk.12.0.dll)

Syntaxe

'Déclaration
Public MustInherit Class AddRule _
    Inherits Rule
public abstract class AddRule : Rule

Le type AddRule expose les membres suivants.

Constructeurs

  Nom Description
Méthode protégée AddRule Initialise une instance de la classe AddRule.

Début

Propriétés

  Nom Description
Propriété publique FireBefore true si cette règle doit être exécutée avant la modification. (Hérité de Rule.)
Propriété publique FireImmediately true si cette règle doit être exécutée immédiatement après la modification. (Hérité de Rule.)
Propriété publique FireOnLocalCommit true si cette règle doit être exécutée lorsque la transaction en cours est validée. (Hérité de Rule.)
Propriété publique FireOnTopLevelCommit true si cette règle doit être exécutée lorsque la première transaction est validée. (Hérité de Rule.)
Propriété publique FireTime Obtient ou définit une valeur lorsque la règle doit s'exécuter.Normalement défini par l'attribut RuleOn. (Hérité de Rule.)
Propriété publique IsEnabled Obtient ou définit une valeur indiquant si la règle est spécifiée.Normalement true par défaut, mais vous pouvez l'initialiser sur false dans l'attribut RuleOn. (Hérité de Rule.)
Propriété publique Priority Obtient la priorité assignée à la règle.Permet de déterminer l'ordre dans lequel les règles sont exécutées à la fin d'une transaction. (Hérité de Rule.)

Début

Méthodes

  Nom Description
Méthode publique CompareTo(Object) Compare la règle à un autre objet. (Hérité de Rule.)
Méthode publique CompareTo(Rule) Compare la règle à une autre règle d'après leurs identificateurs. (Hérité de Rule.)
Méthode publique ElementAdded Avertit les écouteurs de l'utilisation d'une règle.
Méthode publique Equals(Object) Vérifie si la règle est égale à un autre objet. (Hérité de Rule.)
Méthode publique Equals(Rule) Vérifie si une règle est égale à une autre règle. (Hérité de Rule.)
Méthode protégée Finalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publique GetHashCode Obtient le code de hachage de la règle. (Hérité de Rule.)
Méthode publique GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode protégée MemberwiseClone Crée une copie superficielle de l'objet Object actuel. (Hérité de Object.)
Méthode publique ToString Retourne une chaîne qui représente l'objet actif. (Hérité de Object.)

Début

Notes

Les règles de ce type sont générées lorsqu'un élément, une relation, une forme, un connecteur ou un schéma est ajouté au modèle.

Un attribut d'RuleOnAttribute placé sur la classe indique le type d'objet auquel la règle fonctionne aussi sur et lorsque la règle doit être activé.

La règle est appelée lorsque l'objet du type spécifié est ajouté au modèle, si elle est ajoutée dans l'interface utilisateur ou par programme.

La règle est également générée lorsqu'un élément est chargé du fichier. Si vous souhaitez éviter de répondre dans ce cas, inclure ce code dans votre ElementAdded :

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

Pour plus d'informations et d'exemples, consultez Propagation de modifications dans le modèle par des règles.

Exemples

Dans l'exemple suivant, il définit une règle qui vient d'AddRule. Les ensembles de règles la position d'une forme lorsqu'elle est ajoutée au schéma.

L'attribut de RuleOn indique que la règle doit se déclencher lors que la transaction de niveau supérieur.

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

Sécurité des threads

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Voir aussi

Référence

Microsoft.VisualStudio.Modeling, espace de noms

Autres ressources

Propagation de modifications dans le modèle par des règles