WorkflowMenuCommands 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
警告
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
- 繼承
- 屬性
範例
下列範例將示範如何建立自訂 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 欄位,使用 AddCommand 的 IMenuCommandService 方法加入命令時,可以使用這些欄位指定要連結的命令。
建構函式
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,可用於存取捲動功能表。 此欄位為唯讀。 |
已淘汰.
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) |