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.11.0 (dans Microsoft.VisualStudio.Modeling.Sdk.11.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 sera exécutée avant que la modification se produise. (Hérité de Rule.)
Propriété publique FireImmediately true si cette règle exécutera immédiatement la modification se produit. (Hérité de Rule.)
Propriété publique FireOnLocalCommit true si cette règle exécutera lorsque les validations de transaction actuelle. (Hérité de Rule.)
Propriété publique FireOnTopLevelCommit true si cette règle exécutera lorsque les validations de transaction de niveau supérieur. (Hérité de Rule.)
Propriété publique FireTime Obtient ou définit lorsque la règle doit exécuter.Normalement défini par l'attribut de RuleOn. (Hérité de Rule.)
Propriété publique IsEnabled Obtient ou définit si la règle est activée.Rectifiez normalement par défaut, mais vous pouvez l'initialiser false dans l'attribut de RuleOn. (Hérité de Rule.)
Propriété publique Priority Obtient la priorité qui est assignée à la règle.Aide à déterminer la commande dans laquelle des 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 par leurs identificateurs. (Hérité de Rule.)
Méthode publique ElementAdded Alerte des écouteurs qu'une règle a été utilisée.
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 pour 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 déclenchées lorsqu'un élément, une relation, une forme, un connecteur ou un diagramme est ajouté au modèle.

Un attribut d'RuleOnAttribute placé sur la classe indique quel type d'objet la règle s'exécute sur et lorsque la règle doit la déclencher.

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

La règle est également déclenchée lorsqu'un élément est chargé à partir du fichier.Si vous souhaitez éviter de répondre lorsque cela se produit, comprenez 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, on définit une règle qui dérive d'AddRule.Ce ensembles de règles la position d'une forme lorsqu'elle est ajoutée au diagramme.

L'attribut d'RuleOn indique que la règle doit la déclencher lorsque les validations de 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