IMenuCommandService インターフェイス
アセンブリ: System (system.dll 内)


このインターフェイスは、以下の処理を行うメソッドを提供します。
デザイナ動詞は、デザイン モードでショートカット メニューに表示されるカスタム定義のコマンドを表します。デザイナ動詞は、指定したテキスト ラベルを提供できます。各デザイナ動詞には、一意の CommandID が自動的に割り当てられます。デザイナは、その Verbs プロパティを通じてデザイナ動詞を提供できますが、これらを使用できるのは、デザイナのコンポーネントが現在選択されているときだけです。グローバル デザイナ動詞は、選択されているコンポーネントに関係なく、デザイン モードのショートカット メニューからアクセスできるデザイナ動詞コマンドです。このインターフェイスを使用すると、デザイン モードで使用できるグローバル デザイナ動詞のセットを管理できます。
AddVerb メソッドを使用するとグローバル デザイナ動詞を追加でき、RemoveVerb メソッドを使用するとグローバル デザイナ動詞を削除できます。デザイナ動詞の CommandID がわかっていれば、GlobalInvoke メソッドを使用してその動詞を呼び出せます。このインターフェイスの Verbs プロパティには、ショートカット メニューに表示するデザイナ動詞コマンドの現在のセットが格納されています。このデザイナ動詞コマンドのセットは、すべてのグローバル デザイナ動詞と、現在選択されているコンポーネントのデザイナによって提供されるデザイナ動詞で構成されます。この動詞のセットは、デザイナ動詞コマンドを提供しているデザイナに対応するコンポーネントが選択されたり、選択が解除されたりするたびに更新されます。
メニュー コマンドは、定義済み標準コマンドのセットに限定されます。定義済み標準コマンドのほとんどは、StandardCommands 列挙体と MenuCommands 列挙体で定義されています。各メニュー コマンドは追加、削除、呼び出しが行えます。また、このインターフェイスのメソッドを使用して、メニューに追加されたメニュー コマンドを検索できます。
AddCommand メソッドを使用すると標準メニュー コマンドを追加でき、RemoveCommand メソッドを使用すると標準メニュー コマンドを削除できます。AddCommand メソッドのドキュメントに記述されている手順に従うと、定義済みメニュー コマンドにイベント ハンドラを結び付けることができます。FindCommand メソッドを使用してメニュー コマンドがメニューに追加されていた場合、CommandID により、そのメニュー コマンドを検索できます。GlobalInvoke メソッドを使用して、CommandID でメニュー コマンドやデザイナ動詞コマンドを呼び出せます。
![]() |
---|
既に存在している CommandID でメニュー コマンドを追加しようとすると、InvalidOperationException がスローされます。メニュー コマンドを追加するときは、FindCommand メソッドを使用して、そのコマンドがメニュー上に存在していないことを確認するか、例外処理を使用して適宜必要な処理を行ってください。 |
![]() |
---|
メニュー コマンドは、メニューに追加して、その Visible プロパティや Enabled プロパティを false に設定できます。メニューに追加したメニュー コマンドが表示されない場合は、これらのプロパティのいずれかが false に設定されている可能性があります。 |
ShowContextMenu メソッドを使用して、メニュー コマンドを格納している特定の標準ショートカット メニューを指定した位置に表示できます。このメソッドのドキュメントには、表示する有効なメニューを指定するコマンド ID の一覧表が記載されています。

IMenuCommandService を使用して、MenuCommand を追加する例を次に示します。
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _ Public Class CDesigner Inherits System.ComponentModel.Design.ComponentDesigner Public Overrides Sub Initialize(ByVal comp As IComponent) MyBase.Initialize(comp) Dim mcs As IMenuCommandService = CType(comp.Site.GetService(GetType(IMenuCommandService)), IMenuCommandService) Dim mc As New MenuCommand(New EventHandler(AddressOf OnF1Help), StandardCommands.F1Help) mc.Enabled = True mc.Visible = True mc.Supported = True mcs.AddCommand(mc) System.Windows.Forms.MessageBox.Show("Initialize() has been invoked.") End Sub Private Sub OnF1Help(ByVal sender As Object, ByVal e As EventArgs) System.Windows.Forms.MessageBox.Show("F1Help has been invoked.") End Sub End Class
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] public class CDesigner : System.ComponentModel.Design.ComponentDesigner { public override void Initialize(IComponent comp) { base.Initialize(comp); IMenuCommandService mcs = (IMenuCommandService)comp.Site. GetService(typeof(IMenuCommandService)); MenuCommand mc = new MenuCommand(new EventHandler(OnF1Help), StandardCommands.F1Help); mc.Enabled = true; mc.Visible = true; mc.Supported = true; mcs.AddCommand(mc); System.Windows.Forms.MessageBox.Show("Initialize() has been invoked."); } private void OnF1Help(object sender, EventArgs e) { System.Windows.Forms.MessageBox.Show("F1Help has been invoked."); } }
public ref class CDesigner: public ComponentDesigner { public: [PermissionSetAttribute(SecurityAction::Demand, Name="FullTrust")] virtual void Initialize( IComponent^ comp ) override { ComponentDesigner::Initialize( comp ); IMenuCommandService^ mcs = static_cast<IMenuCommandService^>(comp->Site->GetService( IMenuCommandService::typeid )); MenuCommand^ mc = gcnew MenuCommand( gcnew EventHandler( this, &CDesigner::OnF1Help ),StandardCommands::F1Help ); mc->Enabled = true; mc->Visible = true; mc->Supported = true; mcs->AddCommand( mc ); System::Windows::Forms::MessageBox::Show( "Initialize() has been invoked." ); } private: void OnF1Help( Object^ /*sender*/, EventArgs^ /*e*/ ) { System::Windows::Forms::MessageBox::Show( "F1Help has been invoked." ); } }; }

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


IMenuCommandService プロパティ
IMenuCommandService メソッド

名前 | 説明 | |
---|---|---|
![]() | AddCommand | 指定した標準メニュー コマンドをメニューに追加します。 |
![]() | AddVerb | 指定したデザイナ動詞をグローバル デザイナ動詞のセットに追加します。 |
![]() | FindCommand | 指定したコマンド ID を検索し、その ID に関連付けられているメニュー コマンドを返します。 |
![]() | GlobalInvoke | 指定したコマンド ID に一致するメニューまたはデザイナ動詞コマンドを呼び出します。 |
![]() | RemoveCommand | 指定した標準メニュー コマンドをメニューから削除します。 |
![]() | RemoveVerb | 指定したデザイナ動詞をグローバル デザイナ動詞のコレクションから削除します。 |
![]() | ShowContextMenu | 指定した位置に指定したショートカット メニューを表示します。 |

IMenuCommandService メンバ
グローバル デザイナ動詞とデザイン モードで使用できるメニュー コマンドを管理し、いくつかの種類のショートカット メニューを表示するためのメソッドを提供します。
IMenuCommandService データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | AddCommand | 指定した標準メニュー コマンドをメニューに追加します。 |
![]() | AddVerb | 指定したデザイナ動詞をグローバル デザイナ動詞のセットに追加します。 |
![]() | FindCommand | 指定したコマンド ID を検索し、その ID に関連付けられているメニュー コマンドを返します。 |
![]() | GlobalInvoke | 指定したコマンド ID に一致するメニューまたはデザイナ動詞コマンドを呼び出します。 |
![]() | RemoveCommand | 指定した標準メニュー コマンドをメニューから削除します。 |
![]() | RemoveVerb | 指定したデザイナ動詞をグローバル デザイナ動詞のコレクションから削除します。 |
![]() | ShowContextMenu | 指定した位置に指定したショートカット メニューを表示します。 |

- IMenuCommandServiceのページへのリンク