WorkflowDesignerMessageFilter Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Caution
The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*
Provides a base class for all workflow message filters.
public ref class WorkflowDesignerMessageFilter abstract : IDisposable
public abstract class WorkflowDesignerMessageFilter : IDisposable
[System.Obsolete("The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*")]
public abstract class WorkflowDesignerMessageFilter : IDisposable
type WorkflowDesignerMessageFilter = class
interface IDisposable
[<System.Obsolete("The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*")>]
type WorkflowDesignerMessageFilter = class
interface IDisposable
Public MustInherit Class WorkflowDesignerMessageFilter
Implements IDisposable
- Inheritance
-
WorkflowDesignerMessageFilter
- Attributes
- Implements
Examples
The following code example shows a custom designer message filter that derives from WorkflowDesignerMessageFilter. The class, named CustomMessageFilter
, overrides a number of its base class methods including OnMouseDown, OnMouseMove, OnMouseUp, OnMouseDoubleClick, OnMouseEnter, OnMouseHover, OnMouseLeave, OnDragEnter, OnDragOver, and OnKeyDown.
This code example is part of the Basic Designer Hosting SDK Sample from the DesignerShell.cs file. For more information, see Basic Designer Hosting.
internal sealed class CustomMessageFilter : WorkflowDesignerMessageFilter
{
#region Members and Constructor
private bool mouseDown;
private IServiceProvider serviceProvider;
private WorkflowView workflowView;
private WorkflowDesignerLoader loader;
public CustomMessageFilter(IServiceProvider provider, WorkflowView workflowView, WorkflowDesignerLoader loader)
{
this.serviceProvider = provider;
this.workflowView = workflowView;
this.loader = loader;
}
#endregion
#region MessageFilter Overridables
protected override bool OnMouseDown(MouseEventArgs eventArgs)
{
//Allow other components to process this event by not returning true.
this.mouseDown = true;
return false;
}
protected override bool OnMouseMove(MouseEventArgs eventArgs)
{
//Allow other components to process this event by not returning true.
if (mouseDown)
{
workflowView.ScrollPosition = new Point(eventArgs.X, eventArgs.Y);
}
return false;
}
protected override bool OnMouseUp(MouseEventArgs eventArgs)
{
//Allow other components to process this event by not returning true.
mouseDown = false;
return false;
}
protected override bool OnMouseDoubleClick(MouseEventArgs eventArgs)
{
mouseDown = false;
return true;
}
protected override bool OnMouseEnter(MouseEventArgs eventArgs)
{
//Allow other components to process this event by not returning true.
mouseDown = false;
return false;
}
protected override bool OnMouseHover(MouseEventArgs eventArgs)
{
//Allow other components to process this event by not returning true.
mouseDown = false;
return false;
}
protected override bool OnMouseLeave()
{
//Allow other components to process this event by not returning true.
mouseDown = false;
return false;
}
protected override bool OnMouseWheel(MouseEventArgs eventArgs)
{
mouseDown = false;
return true;
}
protected override bool OnMouseCaptureChanged()
{
//Allow other components to process this event by not returning true.
mouseDown = false;
return false;
}
protected override bool OnDragEnter(DragEventArgs eventArgs)
{
return true;
}
protected override bool OnDragOver(DragEventArgs eventArgs)
{
return true;
}
protected override bool OnDragLeave()
{
return true;
}
protected override bool OnDragDrop(DragEventArgs eventArgs)
{
return true;
}
protected override bool OnGiveFeedback(GiveFeedbackEventArgs gfbevent)
{
return true;
}
protected override bool OnQueryContinueDrag(QueryContinueDragEventArgs qcdevent)
{
return true;
}
protected override bool OnKeyDown(KeyEventArgs eventArgs)
{
if (eventArgs.KeyCode == Keys.Delete)
{
ISelectionService selectionService = (ISelectionService)serviceProvider.GetService(typeof(ISelectionService));
if (selectionService != null && selectionService.PrimarySelection is CodeActivity)
{
CodeActivity codeActivityComponent = (CodeActivity)selectionService.PrimarySelection;
CompositeActivity parentActivity = codeActivityComponent.Parent;
if (parentActivity != null)
{
parentActivity.Activities.Remove(codeActivityComponent);
this.ParentView.Update();
}
loader.RemoveActivityFromDesigner(codeActivityComponent);
}
}
return true;
}
protected override bool OnKeyUp(KeyEventArgs eventArgs)
{
return true;
}
protected override bool OnShowContextMenu(Point menuPoint)
{
return true;
}
#endregion
}
Friend NotInheritable Class CustomMessageFilter
Inherits WorkflowDesignerMessageFilter
#Region "Members and Constructor"
Private mouseDown As Boolean
Private serviceProvider As IServiceProvider
Private workflowView As WorkflowView
Private loader As WorkflowDesignerLoader
Public Sub New(ByVal provider As IServiceProvider, ByVal workflowView As WorkflowView, ByVal loader As WorkflowDesignerLoader)
Me.serviceProvider = provider
Me.workflowView = workflowView
Me.loader = loader
End Sub
#End Region
#Region "WorkflowDesignerMessageFilter Overridables"
Protected Overrides Function OnMouseDown(ByVal eventArgs As System.Windows.Forms.MouseEventArgs) As Boolean
' Allow other components to process this event by not returning true.
mouseDown = True
Return False
End Function
Protected Overrides Function OnMouseMove(ByVal eventArgs As System.Windows.Forms.MouseEventArgs) As Boolean
' Allow other components to process this event by not returning true.
If mouseDown Then
workflowView.ScrollPosition = New Point(eventArgs.X, eventArgs.Y)
End If
Return False
End Function
Protected Overrides Function OnMouseUp(ByVal eventArgs As MouseEventArgs) As Boolean
' Allow other components to process this event by not returning true.
mouseDown = False
Return False
End Function
Protected Overrides Function OnMouseDoubleClick(ByVal eventArgs As MouseEventArgs) As Boolean
mouseDown = False
Return True
End Function
Protected Overrides Function OnMouseEnter(ByVal eventArgs As MouseEventArgs) As Boolean
' Allow other components to process this event by not returning true.
mouseDown = False
Return False
End Function
Protected Overrides Function OnMouseHover(ByVal eventArgs As MouseEventArgs) As Boolean
' Allow other components to process this event by not returning true.
mouseDown = False
Return False
End Function
Protected Overrides Function OnMouseLeave() As Boolean
' Allow other components to process this event by not returning true.
mouseDown = False
Return False
End Function
Protected Overrides Function OnMouseWheel(ByVal eventArgs As MouseEventArgs) As Boolean
mouseDown = False
Return True
End Function
Protected Overrides Function OnMouseCaptureChanged() As Boolean
' Allow other components to process this event by not returning true.
mouseDown = False
Return False
End Function
Protected Overrides Function OnDragEnter(ByVal eventArgs As DragEventArgs) As Boolean
Return True
End Function
Protected Overrides Function OnDragOver(ByVal eventArgs As DragEventArgs) As Boolean
Return True
End Function
Protected Overrides Function OnDragLeave() As Boolean
Return True
End Function
Protected Overrides Function OnDragDrop(ByVal eventArgs As DragEventArgs) As Boolean
Return True
End Function
Protected Overrides Function OnGiveFeedback(ByVal gfbevent As GiveFeedbackEventArgs) As Boolean
Return True
End Function
Protected Overrides Function OnQueryContinueDrag(ByVal qcdevent As QueryContinueDragEventArgs) As Boolean
Return True
End Function
Protected Overrides Function OnKeyDown(ByVal eventArgs As KeyEventArgs) As Boolean
If eventArgs.KeyCode = Keys.Delete Then
Dim selectionService As ISelectionService = CType(serviceProvider.GetService(GetType(ISelectionService)), ISelectionService)
If selectionService IsNot Nothing AndAlso TypeOf selectionService.PrimarySelection Is CodeActivity Then
Dim codeActivityComponent As CodeActivity = CType(selectionService.PrimarySelection, CodeActivity)
Dim parentActivity As CompositeActivity = codeActivityComponent.Parent
If parentActivity IsNot Nothing Then
parentActivity.Activities.Remove(codeActivityComponent)
Me.ParentView.Update()
End If
loader.RemoveActivityFromDesigner(codeActivityComponent)
End If
End If
Return True
End Function
Protected Overrides Function OnKeyUp(ByVal eventArgs As KeyEventArgs) As Boolean
Return True
End Function
Protected Overrides Function OnShowContextMenu(ByVal menuPoint As Point) As Boolean
Return True
End Function
#End Region
End Class
Remarks
Note
This material discusses types and namespaces that are obsolete. For more information, see Deprecated Types in Windows Workflow Foundation 4.5.
The workflow designer provides a Strategy
design pattern to create replaceable message filter objects to handle events.
Derive from the WorkflowDesignerMessageFilter class to create message filters that can respond to workflow designer events, such as drag operations, layout and paint operations, and other designer events. To add a custom message filter to the message filters chain, call the AddDesignerMessageFilter on the WorkflowView or override the MessageFilters virtual property on the custom root activity and add the custom message filter to the collection returned from the base class.
Constructors
WorkflowDesignerMessageFilter() |
When implemented in a derived class, initializes an instance of a WorkflowDesignerMessageFilter. |
Properties
MessageHitTestContext |
Gets the HitTestInfo that describes the context of the WorkflowDesignerMessageFilter. |
ParentView |
Gets the WorkflowView that is associated with the WorkflowDesignerMessageFilter. |
Methods
Dispose() |
Releases the resources used by the WorkflowDesignerMessageFilter. |
Dispose(Boolean) |
Releases the unmanaged resources used by the WorkflowDesignerMessageFilter and optionally releases the managed resources. |
Equals(Object) |
Determines whether the specified object is equal to the current object. (Inherited from Object) |
Finalize() |
Attempts to free resources by calling |
GetHashCode() |
Serves as the default hash function. (Inherited from Object) |
GetType() |
Gets the Type of the current instance. (Inherited from Object) |
Initialize(WorkflowView) |
Initializes the WorkflowDesignerMessageFilter with the associated WorkflowView. |
MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |
OnDragDrop(DragEventArgs) |
Occurs when the mouse button is released above an object during a drag operation. |
OnDragEnter(DragEventArgs) |
Occurs when the mouse pointer enters the bounds of an object during a drag operation. |
OnDragLeave() |
Occurs when the mouse pointer leaves the bounds of an object during a drag operation. |
OnDragOver(DragEventArgs) |
Occurs when the mouse pointer moves within the bounds of an object during a drag operation. |
OnGiveFeedback(GiveFeedbackEventArgs) |
Occurs during a drag operation. |
OnKeyDown(KeyEventArgs) |
Occurs when a key is pressed. |
OnKeyUp(KeyEventArgs) |
Occurs when a key is released. |
OnLayout(LayoutEventArgs) |
Occurs when child objects should be repositioned. |
OnMouseCaptureChanged() |
Occurs when the items selected by dragging the mouse changes. |
OnMouseDoubleClick(MouseEventArgs) |
Occurs when you double-click the mouse. |
OnMouseDown(MouseEventArgs) |
Occurs when a mouse button is clicked. |
OnMouseEnter(MouseEventArgs) |
Occurs when the mouse pointer enters the bounds of an object. |
OnMouseHover(MouseEventArgs) |
Occurs when the mouse pointer pauses above an object. |
OnMouseLeave() |
Occurs when the mouse pointer leaves the bounds of an object. |
OnMouseMove(MouseEventArgs) |
Occurs when the mouse pointer moves while within the bounds of an object. |
OnMouseUp(MouseEventArgs) |
Occurs when the mouse button is released. |
OnMouseWheel(MouseEventArgs) |
Occurs when the mouse wheel moves. |
OnPaint(PaintEventArgs, Rectangle, AmbientTheme) |
Occurs when a paint message is received. |
OnPaintWorkflowAdornments(PaintEventArgs, Rectangle, AmbientTheme) |
Occurs when the workflow should repaint its adornments. |
OnQueryContinueDrag(QueryContinueDragEventArgs) |
Occurs during a drag operation. |
OnScroll(ScrollBar, Int32) |
Occurs when a user scrolls in a workflow designer. |
OnShowContextMenu(Point) |
Occurs when the workflow should show a context menu. |
OnThemeChange() |
Occurs when the theme of the workflow changes. |
ProcessMessage(Message) |
Occurs when a raw Win32 message must be processed. |
ToString() |
Returns a string that represents the current object. (Inherited from Object) |