Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

ActivityDesigner-Klasse

Aktualisiert: November 2007

Stellt eine obligatorische Basisklasse für alle Aktivitätsdesignerkomponenten bereit.

Namespace:  System.Workflow.ComponentModel.Design
Assembly:  System.Workflow.ComponentModel (in System.Workflow.ComponentModel.dll)

[ActivityDesignerThemeAttribute(typeof(ActivityDesignerTheme))]
public class ActivityDesigner : IDesignerFilter, 
	IToolboxUser, IPersistUIState, IWorkflowRootDesigner, IRootDesigner, IDesigner, 
	IDisposable
/** @attribute ActivityDesignerThemeAttribute(ActivityDesignerTheme) */
public class ActivityDesigner implements IDesignerFilter, 
	IToolboxUser, IPersistUIState, IWorkflowRootDesigner, IRootDesigner, IDesigner, 
	IDisposable
public class ActivityDesigner implements IDesignerFilter, IToolboxUser, IPersistUIState, IWorkflowRootDesigner, IRootDesigner, IDesigner, IDisposable

Alle Aktivitätsdesignerkomponenten werden von ActivityDesigner abgeleitet. Der ActivityDesigner stellt einen einfachen Designer bereit, mit dem Benutzer Aktivitäten im Entwurfsmodus visuell entwerfen können.

ActivityDesigner stellt einen einfachen Mechanismus bereit, damit die Aktivitäten am Rendern des Workflows auf der Entwurfsoberfläche beteiligt werden können.

ActivityDesigner ermöglicht dem Benutzer das Anpassen des Layouts und der der Aktivität zugeordneten Zeichnung.

ActivityDesigner ermöglicht dem Benutzer das Erweitern der der Aktivität zugeordneten Metadaten.

Im folgenden Codebeispiel wird eine vollständige Implementierung von ActivityDesigner für eine benutzerdefinierte Aktivität veranschaulicht. Der Designer verfügt über ein Kennzeichen, das umgeschaltet werden kann, um dem Basisklassen-ActivityDesigner das Steuern der Zeichnung oder die Verwendung der verschiedenen Methoden der ActivityDesignerPaint-Klasse zum Zeichnen der Aktivität zu ermöglichen.

[ActivityDesignerTheme(typeof(CustomCompositeActivityDesignerTheme))]
public class CustomActivityDesigner : ActivityDesigner
{
    public override bool CanBeParentedTo(CompositeActivityDesigner parentActivityDesigner)
    {
        if (parentActivityDesigner.GetType().ToString() == "System.Workflow.Activities.IfElseBranchDesigner")
            return false;

        return true;
    }

    private ActivityDesignerVerbCollection verbs = null;

    protected override ActivityDesignerVerbCollection Verbs
    {
        get
        {
            if (this.verbs == null)
                CreateActivityVerbs();

            return this.verbs;
        }
    }

    private void CreateActivityVerbs()
    {
        this.verbs = new ActivityDesignerVerbCollection();

        ActivityDesignerVerb addBranchVerb = new ActivityDesignerVerb(this,
            DesignerVerbGroup.View, "Add New Parallel Branch", new EventHandler(OnAddParallelBranch));
        this.verbs.Clear();

        this.verbs.Add(addBranchVerb);
    }

    protected void OnAddParallelBranch(object sender, EventArgs e)
    {
        // Code for adding a new branch to the parallel activity goes here
    }

    protected override Rectangle ImageRectangle
    {
        get
        {
            Rectangle bounds = this.Bounds;
            Size sz = new Size(24, 24);

            Rectangle imageRect = new Rectangle();
            imageRect.X = bounds.Left + ((bounds.Width - sz.Width) / 2);
            imageRect.Y = bounds.Top + 4;
            imageRect.Size = sz;

            return imageRect;
        }
    }

    protected override Rectangle TextRectangle
    {
        get
        {
            return new Rectangle(
                this.Bounds.Left + 2,
                this.ImageRectangle.Bottom,
                this.Bounds.Width - 4,
                this.Bounds.Height - this.ImageRectangle.Height - 1);
        }
    }

    protected override void Initialize(Activity activity)
    {
        base.Initialize(activity);
        Bitmap bmp = Resources.ToolboxImage;
        bmp.MakeTransparent();
        this.Image = bmp;
    }

    readonly static Size BaseSize = new Size(64, 64);
    protected override Size OnLayoutSize(ActivityDesignerLayoutEventArgs e)
    {
        return BaseSize;
    }

    private bool expanded = true;
    private bool useBasePaint = false;

    public bool UseBasePaint
    {
        get { return this.useBasePaint; }
        set { this.useBasePaint = value; }
    }

    public bool Expanded
    {
        get { return this.expanded; }
        set { this.expanded = value; }
    }

    protected override void OnPaint(ActivityDesignerPaintEventArgs e)
    {
        if (this.UseBasePaint == true)
        {
            base.OnPaint(e);
            return;
        }

        DrawCustomActivity(e);
    }

    private void DrawCustomActivity(ActivityDesignerPaintEventArgs e)
    {
        Graphics graphics = e.Graphics;

        CompositeDesignerTheme compositeDesignerTheme = (CompositeDesignerTheme)e.DesignerTheme;

        ActivityDesignerPaint.DrawRoundedRectangle(graphics, compositeDesignerTheme.BorderPen, this.Bounds, compositeDesignerTheme.BorderWidth);

        string text = this.Text;
        Rectangle textRectangle = this.TextRectangle;
        if (!String.IsNullOrEmpty(text) && !textRectangle.IsEmpty)
        {
            ActivityDesignerPaint.DrawText(graphics, compositeDesignerTheme.Font, text, textRectangle, StringAlignment.Center, e.AmbientTheme.TextQuality, compositeDesignerTheme.ForegroundBrush);
        }

        System.Drawing.Image image = this.Image;
        Rectangle imageRectangle = this.ImageRectangle;
        if (image != null && !imageRectangle.IsEmpty)
        {
            ActivityDesignerPaint.DrawImage(graphics, image, imageRectangle, DesignerContentAlignment.Fill);
        }

        ActivityDesignerPaint.DrawExpandButton(graphics,
            new Rectangle(this.Location.X, this.Location.Y, 10, 10),
            this.Expanded,
            compositeDesignerTheme);
    }
}


System.Object
  System.Workflow.ComponentModel.Design.ActivityDesigner
    System.Workflow.ComponentModel.Design.CompositeActivityDesigner

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

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0
Anzeigen: