WorkflowMenuCommands 类

定义

注意

The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*

定义一组 CommandID 字段,其中每个字段都对应于工作流设计器提供的一个命令函数。 此类不能被继承。

public ref class WorkflowMenuCommands sealed : System::ComponentModel::Design::StandardCommands
public sealed class WorkflowMenuCommands : System.ComponentModel.Design.StandardCommands
[System.Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")]
public sealed class WorkflowMenuCommands : System.ComponentModel.Design.StandardCommands
type WorkflowMenuCommands = class
    inherit StandardCommands
[<System.Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")>]
type WorkflowMenuCommands = class
    inherit StandardCommands
Public NotInheritable Class WorkflowMenuCommands
Inherits StandardCommands
继承
WorkflowMenuCommands
属性

示例

下面的示例演示如何创建自定义 MenuCommandService。 在此示例中,当调用 ShowContextMenu 时会创建一个上下文菜单。 在 GetSelectionMenuItems 方法中,使用 WorkflowMenuCommands 类将工作流设计器提供的适当菜单命令与其对应文本相关联。 此操作完成后,将一个事件处理程序与每个命令相关联,以便在选择该命令时,调用相应的 MenuCommand

internal sealed class WorkflowMenuCommandService : MenuCommandService
{
    public WorkflowMenuCommandService(IServiceProvider serviceProvider)
        : base(serviceProvider)
    {
    }

    public override void ShowContextMenu(CommandID menuID, int x, int y)
    {
        if (menuID == WorkflowMenuCommands.SelectionMenu)
        {
            ContextMenu contextMenu = new ContextMenu();

            foreach (DesignerVerb verb in Verbs)
            {
                MenuItem menuItem = new MenuItem(verb.Text, new EventHandler(OnMenuClicked));
                menuItem.Tag = verb;
                contextMenu.MenuItems.Add(menuItem);
            }

            MenuItem[] items = GetSelectionMenuItems();
            if (items.Length > 0)
            {
                contextMenu.MenuItems.Add(new MenuItem("-"));
                foreach (MenuItem item in items)
                    contextMenu.MenuItems.Add(item);
            }

            WorkflowView workflowView = GetService(typeof(WorkflowView)) as WorkflowView;
            if (workflowView != null)
                contextMenu.Show(workflowView, workflowView.PointToClient(new Point(x, y)));
        }
    }

    private MenuItem[] GetSelectionMenuItems()
    {
        List<MenuItem> menuItems = new List<MenuItem>();

        bool addMenuItems = true;
        ISelectionService selectionService = GetService(typeof(ISelectionService)) as ISelectionService;
        if (selectionService != null)
        {
            foreach (object obj in selectionService.GetSelectedComponents())
            {
                if (!(obj is Activity))
                {
                    addMenuItems = false;
                    break;
                }
            }
        }

        if (addMenuItems)
        {
            Dictionary<CommandID, string> selectionCommands = new Dictionary<CommandID, string>();
            selectionCommands.Add(WorkflowMenuCommands.Cut, "Cut");
            selectionCommands.Add(WorkflowMenuCommands.Copy, "Copy");
            selectionCommands.Add(WorkflowMenuCommands.Paste, "Paste");
            selectionCommands.Add(WorkflowMenuCommands.Delete, "Delete");
            selectionCommands.Add(WorkflowMenuCommands.Collapse, "Collapse");
            selectionCommands.Add(WorkflowMenuCommands.Expand, "Expand");
            selectionCommands.Add(WorkflowMenuCommands.Disable, "Disable");
            selectionCommands.Add(WorkflowMenuCommands.Enable, "Enable");

            foreach (CommandID id in selectionCommands.Keys)
            {
                MenuCommand command = FindCommand(id);
                if (command != null)
                {
                    MenuItem menuItem = new MenuItem(selectionCommands[id], new EventHandler(OnMenuClicked));
                    menuItem.Tag = command;
                    menuItems.Add(menuItem);
                }
            }
        }

        return menuItems.ToArray();
    }

    private void OnMenuClicked(object sender, EventArgs e)
    {
        MenuItem menuItem = sender as MenuItem;
        if (menuItem != null && menuItem.Tag is MenuCommand)
        {
            MenuCommand command = menuItem.Tag as MenuCommand;
            command.Invoke();
        }
    }
}
Friend NotInheritable Class WorkflowMenuCommandService
    Inherits MenuCommandService
    Public Sub New(ByVal serviceProvider As IServiceProvider)
        MyBase.new(serviceProvider)
    End Sub
    Public Overrides Sub ShowContextMenu(ByVal menuID As CommandID, ByVal x As Integer, ByVal y As Integer)

        If menuID.ID = WorkflowMenuCommands.SelectionMenu.ID Then
            Dim contextMenu As New ContextMenu()

            For Each verb As DesignerVerb In Verbs
                Dim MenuItem As New MenuItem(verb.Text, AddressOf OnMenuClicked)
                MenuItem.Tag = verb
                contextMenu.MenuItems.Add(MenuItem)
            Next

            Dim items As MenuItem() = GetSelectionMenuItems()
            If (items.Length > 0) Then

                contextMenu.MenuItems.Add(New MenuItem("-"))
                For Each item As MenuItem In items
                    contextMenu.MenuItems.Add(item)
                Next

                Dim workflowView As WorkflowView = CType(GetService(GetType(WorkflowView)), WorkflowView)
                If workflowView Is Nothing Then
                    contextMenu.Show(workflowView, workflowView.PointToClient(New Point(x, y)))
                End If
            End If
        End If
    End Sub

    Private Function GetSelectionMenuItems() As MenuItem()

        Dim menuItems As New List(Of MenuItem)()

        Dim addMenuItems As Boolean = True
        Dim selectionService As ISelectionService = CType(GetService(GetType(ISelectionService)), ISelectionService)
        If selectionService IsNot Nothing Then

            For Each obj As Object In selectionService.GetSelectedComponents()
                If Not TypeOf obj Is Activity Then
                    addMenuItems = False
                    Exit For
                End If
            Next
        End If


        If (addMenuItems) Then

            Dim selectionCommands As New Dictionary(Of CommandID, String)()
            selectionCommands.Add(WorkflowMenuCommands.Cut, "Cut")
            selectionCommands.Add(WorkflowMenuCommands.Copy, "Copy")
            selectionCommands.Add(WorkflowMenuCommands.Paste, "Paste")
            selectionCommands.Add(WorkflowMenuCommands.Delete, "Delete")
            selectionCommands.Add(WorkflowMenuCommands.Collapse, "Collapse")
            selectionCommands.Add(WorkflowMenuCommands.Expand, "Expand")
            selectionCommands.Add(WorkflowMenuCommands.Disable, "Disable")
            selectionCommands.Add(WorkflowMenuCommands.Enable, "Enable")

            For Each id As CommandID In selectionCommands.Keys

                Dim command As MenuCommand = FindCommand(id)
                If command IsNot Nothing Then
                    Dim menuItem As New MenuItem(selectionCommands(id), AddressOf OnMenuClicked)
                    menuItem.Tag = command
                    menuItems.Add(menuItem)
                End If
            Next
        End If

        Return menuItems.ToArray()
    End Function

    Private Sub OnMenuClicked(ByVal sender As Object, ByVal e As EventArgs)

        Dim menuItem As MenuItem = CType(sender, MenuItem)
        If menuItem IsNot Nothing And TypeOf menuItem.Tag Is MenuCommand Then
            Dim command As MenuCommand = CType(menuItem.Tag, MenuCommand)
            command.Invoke()
        End If
    End Sub
End Class

若要启用此服务,请调用 AddService 类中 LoaderHost 属性的 WorkflowDesignerLoader 方法,如下面的示例所示。

protected override void Initialize()
{
    base.Initialize();

    IDesignerLoaderHost host = this.LoaderHost;
    if (host != null)
    {
        host.RemoveService(typeof(IIdentifierCreationService));
        host.AddService(typeof(IIdentifierCreationService), new IdentifierCreationService(host));
        host.AddService(typeof(IMenuCommandService), new WorkflowMenuCommandService(host));
        host.AddService(typeof(IToolboxService), new Toolbox(host));
        TypeProvider typeProvider = new TypeProvider(host);
        typeProvider.AddAssemblyReference(typeof(string).Assembly.Location);
        host.AddService(typeof(ITypeProvider), typeProvider, true);
        host.AddService(typeof(IEventBindingService), new EventBindingService());
    }
}
Protected Overrides Sub Initialize()
    MyBase.Initialize()

    Dim host As IDesignerLoaderHost = Me.LoaderHost
    If host IsNot Nothing Then
        host.RemoveService(GetType(IIdentifierCreationService))
        host.AddService(GetType(IIdentifierCreationService), New IdentifierCreationService(host))
        host.AddService(GetType(IMenuCommandService), New WorkflowMenuCommandService(host))
        host.AddService(GetType(IToolboxService), New Toolbox(host))
        Dim typeProvider As New TypeProvider(host)
        typeProvider.AddAssemblyReference(GetType(String).Assembly.Location)
        host.AddService(GetType(ITypeProvider), typeProvider, True)
        host.AddService(GetType(IEventBindingService), New EventBindingService())
    End If
End Sub

注解

注意

本材料讨论的类型和命名空间已废弃不用。 有关详细信息,请参阅 Windows Workflow Foundation 4.5 中弃用的类型

WorkflowMenuCommands 包含一组 CommandID 字段,可用于在使用 AddCommandIMenuCommandService 方法添加命令时指定要链接的命令。

构造函数

WorkflowMenuCommands()
已过时.

初始化 WorkflowMenuCommands 类的新实例。

字段

BreakpointActionMenu
已过时.

获取断点操作菜单的 CommandID。 此字段为只读。

BreakpointConditionMenu
已过时.

获取断点条件菜单的 CommandID。 此字段为只读。

BreakpointConstraintsMenu
已过时.

获取断点约束菜单的 CommandID。 此字段为只读。

BreakpointHitCountMenu
已过时.

获取断点计数菜单的 CommandID。 此字段为只读。

BreakpointLocationMenu
已过时.

获取断点位置菜单的 CommandID。 此字段为只读。

ChangeTheme
已过时.

获取主题更改菜单的 CommandID。 此字段为只读。

ClearBreakpointsMenu
已过时.

可用于访问清除断点菜单的 CommandID。 此字段为只读。

Collapse
已过时.

可用于访问折叠菜单的 CommandID。 此字段为只读。

CopyToClipboard
已过时.

可用于访问复制菜单的 CommandID。 此字段为只读。

CreateTheme
已过时.

可用于访问创建主题菜单的 CommandID。 此字段为只读。

DebugCommandSetId
已过时.

为调试命令集提供唯一的标识符。 此字段为只读。

DebugStepBranchMenu
已过时.

可用于访问调试步骤分支菜单的 CommandID。 此字段为只读。

DebugStepInstanceMenu
已过时.

可用于访问调试步骤实例菜单的 CommandID。 此字段为只读。

DebugWorkflowGroupId
已过时.

为菜单的调试工作流组提供唯一的标识符。 此字段为只读。

DefaultFilter
已过时.

可用于访问默认筛选器菜单的 CommandID。 此字段为只读。

DefaultPage
已过时.

可用于访问默认页面菜单的 CommandID。 此字段为只读。

DesignerActionsMenu
已过时.

可用于访问设计器操作菜单的 CommandID。 此字段为只读。

DesignerProperties
已过时.

可用于访问设计器属性菜单的 CommandID。 此字段为只读。

Disable
已过时.

可用于访问禁用菜单的 CommandID。 此字段为只读。

Enable
已过时.

可用于访问启用菜单的 CommandID。 此字段为只读。

EnableBreakpointMenu
已过时.

可用于访问启用断点菜单的 CommandID。 此字段为只读。

ExecutionStateMenu
已过时.

可用于访问执行状态菜单的 CommandID。 此字段为只读。

Expand
已过时.

可用于访问展开菜单的 CommandID。 此字段为只读。

FirstZoomCommand
已过时.

可用于访问第一缩放菜单的 CommandID。 此字段为只读。

GotoDisassemblyMenu
已过时.

可用于访问转到反汇编菜单的 CommandID。 此字段为只读。

InsertBreakpointMenu
已过时.

可用于访问插入断点菜单的 CommandID。 此字段为只读。

InsertTracePointMenu
已过时.

可用于访问插入跟踪点菜单的 CommandID。 此字段为只读。

LastZoomCommand
已过时.

可用于访问最后缩放菜单的 CommandID。 此字段为只读。

MenuGuid
已过时.

为菜单提供唯一的标识符。 此字段为只读。

NewDataBreakpointMenu
已过时.

可用于访问新数据断点菜单的 CommandID。 此字段为只读。

NewFileTracePointMenu
已过时.

可用于访问新文件跟踪点菜单的 CommandID。 此字段为只读。

PageDown
已过时.

可用于访问向下翻页菜单的 CommandID。 此字段为只读。

PageLayoutMenu
已过时.

可用于访问页面布局菜单的 CommandID。 此字段为只读。

PageSetup
已过时.

可用于访问页面设置菜单的 CommandID。 此字段为只读。

PageUp
已过时.

可用于访问向上翻页菜单的 CommandID。 此字段为只读。

Pan
已过时.

可用于访问平移菜单的 CommandID。 此字段为只读。

PanMenu
已过时.

可用于访问平移菜单的 CommandID。 此字段为只读。

Print
已过时.

可用于访问打印菜单的 CommandID。 此字段为只读。

PrintPreview
已过时.

可用于访问打印预览菜单的 CommandID。 此字段为只读。

PrintPreviewPage
已过时.

可用于访问打印预览页面菜单的 CommandID。 此字段为只读。

RunToCursorMenu
已过时.

可用于访问运行到光标处菜单的 CommandID。 此字段为只读。

SaveAsImage
已过时.

可用于访问另存为图像菜单的 CommandID。 此字段为只读。

SelectionMenu
已过时.

可用于访问选择菜单的 CommandID。 此字段为只读。

SetNextStatementMenu
已过时.

可用于访问设置下一语句菜单的 CommandID。 此字段为只读。

ShowAll
已过时.

可用于访问全部显示菜单的 CommandID。 此字段为只读。

ShowNextStatementMenu
已过时.

可用于访问显示下一语句菜单的 CommandID。 此字段为只读。

ToggleBreakpointMenu
已过时.

可用于访问切换断点菜单的 CommandID。 此字段为只读。

VerbGroupActions
已过时.

可用于访问谓词组操作菜单的 CommandID。 此字段为只读。

VerbGroupDesignerActions
已过时.

可用于访问谓词组设计器操作菜单的 CommandID。 此字段为只读。

VerbGroupEdit
已过时.

可用于访问编辑谓词组菜单的 CommandID。 此字段为只读。

VerbGroupGeneral
已过时.

可用于访问常规谓词组菜单的 CommandID。 此字段为只读。

VerbGroupMisc
已过时.

可用于访问杂项谓词组菜单的 CommandID。 此字段为只读。

VerbGroupOptions
已过时.

可用于访问选项谓词组菜单的 CommandID。 此字段为只读。

VerbGroupView
已过时.

可用于访问视图谓词组菜单的 CommandID。 此字段为只读。

WorkflowCommandSetId
已过时.

为工作流命令集提供唯一的标识符。 此字段为只读。

WorkflowToolBar
已过时.

可用于访问工作流工具栏菜单的 CommandID。 此字段为只读。

Zoom100Mode
已过时.

可用于比例 100% 菜单的 CommandID。 此字段为只读。

Zoom150Mode
已过时.

可用于访问显示比例 150% 菜单的 CommandID。 此字段为只读。

Zoom200Mode
已过时.

可用于访问显示比例 200% 菜单的 CommandID。 此字段为只读。

Zoom300Mode
已过时.

可用于访问显示比例 300% 菜单的 CommandID。 此字段为只读。

Zoom400Mode
已过时.

可用于访问显示比例 400% 菜单的 CommandID。 此字段为只读。

Zoom50Mode
已过时.

可用于访问显示比例 50% 菜单的 CommandID。 此字段为只读。

Zoom75Mode
已过时.

可用于访问显示比例 75% 菜单的 CommandID。 此字段为只读。

ZoomIn
已过时.

可用于访问放大菜单的 CommandID。 此字段为只读。

ZoomLevelCombo
已过时.

可用于访问缩放级别组合菜单的 CommandID。 此字段为只读。

ZoomLevelListHandler
已过时.

可用于访问缩放级别列表处理程序菜单的 CommandID。 此字段为只读。

ZoomMenu
已过时.

可用于访问缩放菜单的 CommandID。 此字段为只读。

ZoomOut
已过时.

可用于访问缩小菜单的 CommandID。 此字段为只读。

方法

Equals(Object)
已过时.

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()
已过时.

作为默认哈希函数。

(继承自 Object)
GetType()
已过时.

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()
已过时.

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()
已过时.

返回表示当前对象的字符串。

(继承自 Object)

适用于