ActivityDesigner Class
Provides a mandatory base class for all activity designer components.
Assembly: System.Workflow.ComponentModel (in System.Workflow.ComponentModel.dll)
All activity designer components derive from ActivityDesigner. The ActivityDesigner provides a simple designer which lets the user visually design activities in the design mode.
ActivityDesigner provides a simple mechanism for the activities so they can participate in rendering the workflow on the design surface.
ActivityDesigner lets the user customize layout and drawing associated with the activity.
ActivityDesigner lets the user extend the metadata associated with the activity.
The following example shows a complete implementation of an ActivityDesigner for a custom activity. The designer has a flag that can be toggled to allow the base class ActivityDesigner to control the painting or to utilize the various methods the ActivityDesignerPaint class to draw the activity.
<ActivityDesignerTheme(GetType(CustomCompositeActivityDesignerTheme))> _ Public Class CustomActivityDesigner Inherits ActivityDesigner Public Overrides Function CanBeParentedTo(ByVal parentActivityDesigner As CompositeActivityDesigner) As Boolean If parentActivityDesigner.GetType().ToString() = "System.Workflow.Activities.IfElseBranchDesigner" Then Return False End If Return True End Function Private verbsValue As ActivityDesignerVerbCollection = Nothing Protected Overrides ReadOnly Property Verbs() As ActivityDesignerVerbCollection Get If verbsValue Is Nothing Then CreateActivityVerbs() End If Return Me.verbsValue End Get End Property Private Sub CreateActivityVerbs() Me.verbsValue = New ActivityDesignerVerbCollection() Dim addBranchVerb As New ActivityDesignerVerb(Me, DesignerVerbGroup.View, "Add New Parallel Branch", AddressOf OnAddParallelBranch) Me.verbsValue.Clear() Me.verbsValue.Add(addBranchVerb) End Sub Protected Sub OnAddParallelBranch(ByVal sender As Object, ByVal e As EventArgs) ' Code for adding a new branch to the parallel activity goes here End Sub Protected Overrides ReadOnly Property ImageRectangle() As Rectangle Get Dim Bounds As Rectangle = Me.Bounds Dim sz As New Size(24, 24) Dim imageRect As New Rectangle() imageRect.X = Bounds.Left + ((Bounds.Width - sz.Width) / 2) imageRect.Y = Bounds.Top + 4 imageRect.Size = sz Return imageRect End Get End Property Protected Overrides ReadOnly Property TextRectangle() As Rectangle Get Return New Rectangle( _ Me.Bounds.Left + 2, _ Me.ImageRectangle.Bottom, _ Me.Bounds.Width - 4, _ Me.Bounds.Height - Me.ImageRectangle.Height - 1) End Get End Property Protected Overrides Sub Initialize(ByVal activity As Activity) MyBase.Initialize(activity) Dim bmp As Bitmap = Resources.ToolboxImage bmp.MakeTransparent() Me.Image = bmp End Sub Shared ReadOnly BaseSize As New Size(64, 64) Protected Overrides Function OnLayoutSize(ByVal e As ActivityDesignerLayoutEventArgs) As Size Return BaseSize End Function Private expandedValue As Boolean = True Private useBasePaintValue As Boolean = False Public Property UseBasePaint() As Boolean Get Return Me.useBasePaintValue End Get Set(ByVal value As Boolean) Me.useBasePaintValue = value End Set End Property Public Property Expanded() As Boolean Get Return Me.expandedValue End Get Set(ByVal value As Boolean) Me.expandedValue = value End Set End Property Protected Overrides Sub OnPaint(ByVal e As ActivityDesignerPaintEventArgs) If Me.UseBasePaint = True Then MyBase.OnPaint(e) Return End If DrawCustomActivity(e) End Sub Private Sub DrawCustomActivity(ByVal e As ActivityDesignerPaintEventArgs) Dim graphics As Graphics = e.Graphics Dim compositeDesignerTheme As CompositeDesignerTheme = CType(e.DesignerTheme, CompositeDesignerTheme) ActivityDesignerPaint.DrawRoundedRectangle(graphics, compositeDesignerTheme.BorderPen, Me.Bounds, compositeDesignerTheme.BorderWidth) Dim text As String = Me.Text Dim TextRectangle As Rectangle = Me.TextRectangle If Not String.IsNullOrEmpty(text) And Not TextRectangle.IsEmpty Then ActivityDesignerPaint.DrawText(graphics, compositeDesignerTheme.Font, text, TextRectangle, StringAlignment.Center, e.AmbientTheme.TextQuality, compositeDesignerTheme.ForegroundBrush) End If Dim Image As System.Drawing.Image = Me.Image Dim ImageRectangle As Rectangle = Me.ImageRectangle If Image IsNot Nothing And Not ImageRectangle.IsEmpty Then ActivityDesignerPaint.DrawImage(graphics, Image, ImageRectangle, DesignerContentAlignment.Fill) End If ActivityDesignerPaint.DrawExpandButton(graphics, _ New Rectangle(Me.Location.X, Me.Location.Y, 10, 10), _ Me.Expanded, _ compositeDesignerTheme) End Sub End Class
System.Workflow.ComponentModel.Design.ActivityDesigner
System.Workflow.ComponentModel.Design.CompositeActivityDesigner
Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.