CommandSet 类

表示命令子集,其可在特定域语言中的菜单中使用。 重写 YourLanguageCommandSet 方法以修改如何处理这些命令。

此 API 不兼容 CLS。 

继承层次结构

System.Object
  System.MarshalByRefObject
    Microsoft.VisualStudio.Modeling.Shell.CommandSetLibrary
      Microsoft.VisualStudio.Modeling.Shell.CommandSet

命名空间:  Microsoft.VisualStudio.Modeling.Shell
程序集:  Microsoft.VisualStudio.Modeling.Sdk.Shell.12.0(在 Microsoft.VisualStudio.Modeling.Sdk.Shell.12.0.dll 中)

语法

声明
<CLSCompliantAttribute(False)> _
Public MustInherit Class CommandSet _
    Inherits CommandSetLibrary
[CLSCompliantAttribute(false)]
public abstract class CommandSet : CommandSetLibrary

CommandSet 类型公开以下成员。

构造函数

  名称 说明
受保护的方法 CommandSet 初始化 CommandSet 类的新实例。

页首

属性

  名称 说明
受保护的属性 CurrentDocData (继承自 CommandSetLibrary。)
受保护的属性 CurrentDocumentSelection (继承自 CommandSetLibrary。)
受保护的属性 CurrentDocView 获取活动的文档窗口视图。
受保护的属性 CurrentModelingDocView (继承自 CommandSetLibrary。)
受保护的属性 CurrentSelection (继承自 CommandSetLibrary。)
受保护的属性 MenuService (继承自 CommandSetLibrary。)
受保护的属性 MonitorSelection (继承自 CommandSetLibrary。)
受保护的属性 ServiceProvider (继承自 CommandSetLibrary。)
受保护的属性 SingleDocumentSelection (继承自 CommandSetLibrary。)
受保护的属性 SingleSelection (继承自 CommandSetLibrary。)

页首

方法

  名称 说明
受保护的方法 CanDeleteSelectedItems 如果选择的项目可删除,则返回 true。 (继承自 CommandSetLibrary。)
公共方法 CreateObjRef 安全关键。创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。)
受保护的方法 DeleteSelectedItems 删除选定项。 (继承自 CommandSetLibrary。)
公共方法 Equals 确定指定的对象是否等于当前对象。 (继承自 Object。)
受保护的方法 Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法 GetHashCode 作为默认哈希函数。 (继承自 Object。)
公共方法 GetLifetimeService 安全关键。检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。)
受保护的方法 GetMenuCommands 显示快捷菜单的命令。 (重写 CommandSetLibrary.GetMenuCommands()。)
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
公共方法 Initialize 初始化命令集。调用 GetMenuCommands 并缓存该结果。 (继承自 CommandSetLibrary。)
公共方法 InitializeLifetimeService 安全关键。获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。)
受保护的方法 IsAnyDocumentSelectionCompartment 如果任何一个在选择列表中的项是隔离舱,则为 true。 (继承自 CommandSetLibrary。)
受保护的方法 IsAnyDocumentSelectionMoveableHostShape 如果任何一个在选择列表中的项是不能删除的可移动主机形状则为 true。 (继承自 CommandSetLibrary。)
受保护的方法 IsAnyDocumentSelectionUndeletable 如果任何一个在选择列表中的形状项不能删除,则为 true。 (继承自 CommandSetLibrary。)
受保护的方法 IsCurrentDiagramEmpty 如果图形没有子项,则为 true。 (继承自 CommandSetLibrary。)
受保护的方法 IsDiagramSelected 如果选中该图形,则为 true。 (继承自 CommandSetLibrary。)
受保护的方法 IsExpandableShape 验证用户是否可以展开该形状显示域属性。
受保护的方法 IsSingleDocumentSelection 如果只有在活动文档选择的项目,则为 true。 (继承自 CommandSetLibrary。)
受保护的方法 IsSingleSelection 如果只有在活动文档窗口或工具窗口选择的项目,则为 true。 (继承自 CommandSetLibrary。)
受保护的方法 MemberwiseClone() 创建当前 Object 的浅表副本。 (继承自 Object。)
受保护的方法 MemberwiseClone(Boolean) 创建当前 MarshalByRefObject 对象的浅表副本。 (继承自 MarshalByRefObject。)
受保护的方法 ProcessOnMenuDeleteCommand 当该用户单击 Delete 命令或按 Delete 键时调用。删除项。重写此方法以更改此行为。
受保护的方法 ProcessOnMenuEditCompartmentItemCommand 当该用户单击隔离舱形状中的项的编辑菜单命令时调用。输入文本编辑状态。重写此方法以更改此行为。
受保护的方法 ProcessOnMenuExpandCollapseCommand 当该用户扩展或折叠分配给该形状的属性的列表的调用。
受保护的方法 ProcessOnMenuPageSetupCommand 打开“页面设置”对话框。重写此方法以更改此行为。
受保护的方法 ProcessOnMenuPrintCommand 打开“打印”对话框。重写此方法以更改此行为。
受保护的方法 ProcessOnMenuPrintPreviewCommand 打开“打印预览”窗口。重写此方法以更改此行为。
受保护的方法 ProcessOnMenuRerouteLineCommand 还原两个形状之间的连接线的默认位置。重写此方法以更改此行为。
受保护的方法 ProcessOnMenuResetDecoratorLocationCommand 重写此方法以推进 Reset Decorator Location 菜单命令。
受保护的方法 ProcessOnMenuResetDecoratorSizeCommand 重写此方法以推进 Reset Decorator Size 菜单命令。
受保护的方法 ProcessOnMenuSelectAllCommand 当该用户在单击“编辑”菜单中选择全部命令或按 ctrl-A 时调用。选择关系图中的所有形状。重写此方法以更改此行为。
受保护的方法 ProcessOnStatusDeleteCommand 确定删除命令是否出现在上下文菜单中。当用户在关系图中右击时调用。
受保护的方法 ProcessOnStatusEditCompartmentItemCommand 确定编辑命令是否出现在上下文菜单中。
受保护的方法 ProcessOnStatusExpandCollapseCommand 确定展开/折叠命令是否出现在上下文菜单中。当用户在关系图中右击时调用。
受保护的方法 ProcessOnStatusPageSetupCommand 确定页面设置命令是否出现在文件菜单上。当该用户在关系图处于活动状态时单击“文件”菜单时调用。
受保护的方法 ProcessOnStatusPrintCommand 确定打印命令是否出现在文件菜单上。当该用户在关系图处于活动状态时单击“文件”菜单时调用。
受保护的方法 ProcessOnStatusPrintPreviewCommand 确定打印预览命令是否出现在菜单上。当该用户在关系图处于活动状态时单击“文件”菜单时调用。
受保护的方法 ProcessOnStatusRerouteLineCommand 确定重新路由命令是否出现在上下文菜单中。当用户在关系图中右击时调用。
受保护的方法 ProcessOnStatusResetDecoratorLocationCommand 确定重置修饰器位置命令是否出现在上下文菜单中。当用户在关系图中右击时调用。
受保护的方法 ProcessOnStatusResetDecoratorSizeCommand 确定重新路由命令是否出现在上下文菜单中。当用户在关系图中右击时调用。
受保护的方法 ProcessOnStatusSelectAllCommand 确定全选命令是否出现在菜单上。当该用户在关系图处于活动状态时单击“编辑”菜单时调用。
公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)

页首

备注

可以修改 DSL 如何响应这些菜单命令。 命令来修改包含在快捷菜单中的命令以及对文件和"编辑"菜单的某些命令。

在 DslPackage 项目,您将找到名为 CommandSet.cs 的已生成文件,包含一个名为的类的一部分声明 <TheLanguageName>CommandSet。若要修改标准菜单命令的行为,请添加具有同一类的分部定义的其他文件。

在此类中,您可以重写在基类中定义的方法。

备注

验证在新文件的命名空间相同。在生成的 CommandSet.cs 的命名空间。在新文件中,那么,当您键入“覆盖”在类声明内时,您应该看到您可以重写方法的列表。

每个命令都有一个 ProcessOnStatus…方法和一个 ProcessOnMenu…方法。 ProcessOnStatus…方法确定命令是否出现在右键单击菜单。 设置命令参数的可见属性确定命令是否可见和设置启用属性确定是否启用菜单项或变灰。

当用户单击此菜单项时,ProcessOnMenu…方法执行命令。

备注

可以在 Commands.vsct 文件的附加命令。

有关详细信息,请参阅如何:向快捷菜单中添加命令

示例

此文件添加到 DslPackage 项目。 DSL 的它禁止用户一次删除多个元素。

// In the DslPackage project.
namespace Company.Language1 // Check this is correct after creating the file.
{
  internal partial class Language1CommandSet // Same class as the generated class.
  {
    /// <summary>
    /// Called when user right-clicks on the diagram or clicks the Edit menu.
    /// </summary>
    /// <param name="command"></param>
    protected override void ProcessOnStatusDeleteCommand(System.ComponentModel.Design.MenuCommand command)
    {
      if (this.CurrentSelection.Count > 1)
      {
        // If user has selected more than one item, Delete is greyed out.
        command.Enabled = false;
      }
      else
      {
        // Otherwise, default behavior.
        base.ProcessOnStatusDeleteCommand(command);
      }
    }
    /// <summary>
    /// Called when user presses Delete key or clicks the Delete command on a menu.
    /// </summary>
    protected override void ProcessOnMenuDeleteCommand()
    {
      // Allow users to delete only one thing at a time.
      if (this.CurrentSelection.Count <= 1)
      {
        base.ProcessOnMenuDeleteCommand();
      }
    }
  }
}

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

请参阅

参考

Microsoft.VisualStudio.Modeling.Shell 命名空间

其他资源

如何:向快捷菜单中添加命令