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 |
已过时.
获取断点计数菜单的 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。 此字段为只读。 |
已过时.
可用于访问打印菜单的 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) |