Compartilhar via


Classe AddRule

Representa uma regra que é chamada quando um objeto é adicionado ao modelo.

Hierarquia de herança

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 (em Microsoft.VisualStudio.Modeling.Sdk.11.0.dll)

Sintaxe

'Declaração
Public MustInherit Class AddRule _
    Inherits Rule
public abstract class AddRule : Rule

O tipo AddRule expõe os membros a seguir.

Construtores

  Nome Descrição
Método protegido AddRule Inicializa uma instância da AddRule classe.

Superior

Propriedades

  Nome Descrição
Propriedade pública FireBefore true Se esta regra será executada antes da alteração ocorre. (Herdado de Rule.)
Propriedade pública FireImmediately true Se esta regra será executada imediatamente a alteração ocorrerá. (Herdado de Rule.)
Propriedade pública FireOnLocalCommit true Se esta regra será executada quando a transação atual for confirmada. (Herdado de Rule.)
Propriedade pública FireOnTopLevelCommit true Se esta regra será executada quando a transação de nível superior seja confirmada. (Herdado de Rule.)
Propriedade pública FireTime Obtém ou define quando a regra deve ser executado.Normalmente definido pelo atributo RuleOn. (Herdado de Rule.)
Propriedade pública IsEnabled Obtém ou define se a regra está habilitada.Normalmente true por padrão, mas você pode inicializá-lo para false no atributo RuleOn. (Herdado de Rule.)
Propriedade pública Priority Obtém a prioridade atribuída à regra.Ajuda a determinar a ordem em que as regras são executadas no final de uma transação. (Herdado de Rule.)

Superior

Métodos

  Nome Descrição
Método público CompareTo(Object) Compara a regra para um outro objeto. (Herdado de Rule.)
Método público CompareTo(Rule) Compara a regra para outra regra por suas identificações. (Herdado de Rule.)
Método público ElementAdded Alerta ouvintes que foi usada uma regra.
Método público Equals(Object) Verifica se a regra é igual a outro objeto. (Herdado de Rule.)
Método público Equals(Rule) Verifica se uma regra é igual a outra regra. (Herdado de Rule.)
Método protegido Finalize Permite que um objeto tentar liberar recursos e realizar outras operações de limpeza antes de ser recuperados pela coleta de lixo. (Herdado de Object.)
Método público GetHashCode Obtém o código hash para a regra. (Herdado de Rule.)
Método público GetType Obtém Type da instância atual. (Herdado de Object.)
Método protegido MemberwiseClone Cria uma cópia superficial de Objectatual. (Herdado de Object.)
Método público ToString Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object.)

Superior

Comentários

As regras desse tipo são acionadas quando um elemento, relacionamento, forma, conector ou diagrama é adicionado ao modelo.

A RuleOnAttribute colocado na classe de atributo indica que tipo de objeto a regra funciona em e quando a regra deve ser acionado.

A regra é chamada quando o objeto do tipo especificado é adicionado ao modelo, se ele é adicionado na interface de usuário ou através de programação.

A regra também é acionada quando um elemento é carregado a partir do arquivo.Se você quiser evitar responder quando isso acontece, inclua esse código no seu ElementAdded:

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

Para mais informações e exemplos, consulte Regras de propagam alterações dentro do modelo.

Exemplos

No exemplo a seguir, A regra é definida que deriva de AddRule.Essa regra define a posição de uma forma quando ela é adicionada ao diagrama.

O RuleOn atributo indica que a regra deve ser acionado quando a transação de nível superior seja confirmada.

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

Acesso thread-safe

Quaisquer membros estático (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Consulte também

Referência

Namespace Microsoft.VisualStudio.Modeling

Outros recursos

Regras de propagam alterações dentro do modelo