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
已淘汰.

取得中斷點叫用次數 (Hit Count) 功能表的 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,可用來存取 goto 反組譯碼功能表。 此欄位為唯讀。

InsertBreakpointMenu
已淘汰.

CommandID,可用來存取插入中斷點功能表。 此欄位為唯讀。

InsertTracePointMenu
已淘汰.

CommandID,可用來存取插入追蹤點功能表。 此欄位為唯讀。

LastZoomCommand
已淘汰.

CommandID,可用來存取縮放為最後一級的功能表。 此欄位為唯讀。

MenuGuid
已淘汰.

提供功能表的唯一識別碼。 此欄位為唯讀。

NewDataBreakpointMenu
已淘汰.

CommandID,可用來存取新資料中斷點功能表。 此欄位為唯讀。

NewFileTracePointMenu
已淘汰.

CommandID,可用來存取新檔案追蹤點功能表。 此欄位為唯讀。

PageDown
已淘汰.

CommandID,可用於存取 PageDown 功能表。 此欄位為唯讀。

PageLayoutMenu
已淘汰.

CommandID,可用於存取頁面配置功能表。 此欄位為唯讀。

PageSetup
已淘汰.

CommandID,可用於存取版面設定功能表。 此欄位為唯讀。

PageUp
已淘汰.

CommandID,可用於存取 PageUp 功能表。 此欄位為唯讀。

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
已淘汰.

CommandID,可用來存取縮放 100% 功能表。 此欄位為唯讀。

Zoom150Mode
已淘汰.

CommandID,可用來存取縮放 150% 功能表。 此欄位為唯讀。

Zoom200Mode
已淘汰.

CommandID,可用來存取縮放 200% 功能表。 此欄位為唯讀。

Zoom300Mode
已淘汰.

CommandID,可用來存取縮放 300% 功能表。 此欄位為唯讀。

Zoom400Mode
已淘汰.

CommandID,可用來存取縮放 400% 功能表。 此欄位為唯讀。

Zoom50Mode
已淘汰.

CommandID,可用來存取縮放 50% 功能表。 此欄位為唯讀。

Zoom75Mode
已淘汰.

CommandID,可用來存取縮放 75% 功能表。 此欄位為唯讀。

ZoomIn
已淘汰.

CommandID,可用來存取放大功能表。 此欄位為唯讀。

ZoomLevelCombo
已淘汰.

CommandID,可用來存取縮放層級下拉式功能表。 此欄位為唯讀。

ZoomLevelListHandler
已淘汰.

CommandID,可用來存取縮放層級清單處理常式功能表。 此欄位為唯讀。

ZoomMenu
已淘汰.

CommandID,可用來存取縮放功能表。 此欄位為唯讀。

ZoomOut
已淘汰.

CommandID,可用來存取縮小功能表。 此欄位為唯讀。

方法

Equals(Object)
已淘汰.

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()
已淘汰.

做為預設雜湊函式。

(繼承來源 Object)
GetType()
已淘汰.

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()
已淘汰.

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()
已淘汰.

傳回代表目前物件的字串。

(繼承來源 Object)

適用於