CommandSet 類別
表示使用網域特定語言的功能表中可用的命令子集。 覆寫 YourLanguageCommandSet 中的方法,以修改這些命令的處理方式。
此應用程式開發介面不符合 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 | 安全性關鍵。建立包含所有相關資訊的物件,這些資訊是產生用來與遠端物件通訊的所需 Proxy。 (繼承自 MarshalByRefObject)。 | |
DeleteSelectedItems | 刪除選取的項目。 (繼承自 CommandSetLibrary)。 | |
Equals | 判斷指定的物件是否等於目前物件。 (繼承自 Object)。 | |
Finalize | 允許物件在記憶體回收進行回收之前,嘗試釋放資源並執行其他清除作業。 (繼承自 Object)。 | |
GetHashCode | 做為預設雜湊函式。 (繼承自 Object)。 | |
GetLifetimeService | 安全性關鍵。擷取控制這個執行個體存留期 (Lifetime) 原則的目前存留期服務物件。 (繼承自 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 的淺層複本 (Shallow Copy)。 (繼承自 Object)。 | |
MemberwiseClone(Boolean) | 建立目前 MarshalByRefObject 物件的淺層複本。 (繼承自 MarshalByRefObject)。 | |
ProcessOnMenuDeleteCommand | 當使用者按一下 [刪除] 命令或按下 Delete 鍵時呼叫。刪除項目。覆寫這個方法來變更此行為。 | |
ProcessOnMenuEditCompartmentItemCommand | 當使用者在區間圖案中的項目上按一下 [編輯] 功能表命令時呼叫。進入文字編輯狀態。覆寫這個方法來變更此行為。 | |
ProcessOnMenuExpandCollapseCommand | 當使用者展開或摺疊指派給圖案的屬性清單時呼叫。 | |
ProcessOnMenuPageSetupCommand | 開啟 [版面設定] 對話方塊。覆寫這個方法來變更此行為。 | |
ProcessOnMenuPrintCommand | 開啟 [列印] 對話方塊。覆寫這個方法來變更此行為。 | |
ProcessOnMenuPrintPreviewCommand | 開啟 [列印預覽] 視窗。覆寫這個方法來變更此行為。 | |
ProcessOnMenuRerouteLineCommand | 還原兩個圖形之間的接點的原始位置。覆寫這個方法來變更此行為。 | |
ProcessOnMenuResetDecoratorLocationCommand | 覆寫這個方法,以處理 [重設 Decorator 位置] 功能表命令。 | |
ProcessOnMenuResetDecoratorSizeCommand | 覆寫這個方法,以處理 [重設 Decorator 大小] 功能表命令。 | |
ProcessOnMenuSelectAllCommand | 當使用者按一下 [編輯] 功能表上的 [全選] 命令或按下 ctrl-A 時呼叫。選取圖表中的所有圖形。覆寫方法來變更此行為。 | |
ProcessOnStatusDeleteCommand | 判斷 [刪除] 命令是否出現在內容功能表上。使用者以滑鼠右鍵按一下圖表時呼叫。 | |
ProcessOnStatusEditCompartmentItemCommand | 判斷 [編輯] 命令是否出現在內容功能表上。 | |
ProcessOnStatusExpandCollapseCommand | 判斷是否 [展開] 還是 [摺疊] 命令出現在內容功能表上。使用者以滑鼠右鍵按一下圖表時呼叫。 | |
ProcessOnStatusPageSetupCommand | 判斷 [版面設定] 命令是否出現在 [檔案] 功能表上。當使用者在圖表處於作用中狀態時按一下 [檔案] 功能表時呼叫。 | |
ProcessOnStatusPrintCommand | 判斷 [列印] 命令是否出現在 [檔案] 功能表上。當使用者在圖表處於作用中狀態時按一下 [檔案] 功能表時呼叫。 | |
ProcessOnStatusPrintPreviewCommand | 判斷 [預覽] 命令是否出現在 [檔案] 功能表上。當使用者在圖表處於作用中狀態時按一下 [檔案] 功能表時呼叫。 | |
ProcessOnStatusRerouteLineCommand | 判斷 [重設路徑] 命令是否出現在內容功能表上。使用者以滑鼠右鍵按一下圖表時呼叫。 | |
ProcessOnStatusResetDecoratorLocationCommand | 判斷 [重設裝飾位置] 命令是否出現在內容功能表上。使用者以滑鼠右鍵按一下圖表時呼叫。 | |
ProcessOnStatusResetDecoratorSizeCommand | 判斷 [重設裝飾大小] 命令是否出現在內容功能表上。使用者以滑鼠右鍵按一下圖表時呼叫。 | |
ProcessOnStatusSelectAllCommand | 判斷 [全選] 命令是否出現在功能表上。當使用者在圖表處於作用中狀態時按一下 [編輯] 功能表時呼叫。 | |
ToString | 傳回表示目前物件的字串。 (繼承自 Object)。 |
回頁首
備註
您可以修改您的 DSL 如何回應某些命令。 命令可以修改包含在捷徑功能表的命令和在檔案和編輯功能表的某些命令。
在您的 DslPackage 專案,您會看到產生的檔案呼叫 CommandSet.cs,包含名為之類別的部分宣告 <YourLanguageName>CommandSet。若要修改標準功能表命令的行為,請將具有相同類別的部分定義的其他檔案。
在這個類別,您可以覆寫基底類別中定義的方法。
注意事項 |
---|
確認在新檔案的命名空間與所產生 CommandSet.cs 的命名空間。在新的檔案,在中,當您輸入「override」在類別宣告內時,您應該會看到您可以覆寫的方法清單。 |
每個命令都有一 ProcessOnStatus…方法和一 ProcessOnMenu…方法。 ProcessOnStatus…方法判斷命令是否出現在以滑鼠右鍵按一下功能表。 設定命令參數的 Visible 屬性判斷命令是否能看見和設定允許屬性判斷功能表項目已啟用或變成灰色。
當使用者按一下功能表項目時, 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();
}
}
}
}
執行緒安全
這個類型的任何 Public static (在 Visual Basic 中為 Shared) 成員都是安全執行緒。不保證任何執行個體成員是安全執行緒。
請參閱
參考
Microsoft.VisualStudio.Modeling.Shell 命名空間