次の方法で共有


IMenuCommandService インターフェイス

定義

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

public interface class IMenuCommandService
public interface IMenuCommandService
[System.Runtime.InteropServices.ComVisible(true)]
public interface IMenuCommandService
type IMenuCommandService = interface
[<System.Runtime.InteropServices.ComVisible(true)>]
type IMenuCommandService = interface
Public Interface IMenuCommandService
派生
属性

この例では、 IMenuCommandService を使用して MenuCommandを追加する方法を示します。

   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." );
      }
   };
}
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.");
    }
}
<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

注釈

このインターフェイスには、次のメソッドが用意されています。

  • グローバル デザイナー動詞コマンドを検索、呼び出し、追加、削除します。

  • 標準メニュー コマンドを検索、呼び出し、追加、削除します。

  • 標準メニュー コマンドに関連付けられているイベント ハンドラーを変更します。

  • メニュー CommandIDに関連付けられている標準コマンドのショートカット メニューを表示します。

デザイナー動詞は、デザイン モードのショートカット メニューに表示されるカスタム定義コマンドを表します。 デザイナー動詞は、指定されたテキスト ラベルを提供できます。 各デザイナー動詞には、一意の 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 を一覧表示するテーブルが含まれています。

プロパティ

名前 説明
Verbs

現在使用できるデザイナー動詞のコレクションを取得します。

メソッド

名前 説明
AddCommand(MenuCommand)

指定した標準メニュー コマンドをメニューに追加します。

AddVerb(DesignerVerb)

指定したデザイナー動詞をグローバル デザイナー動詞のセットに追加します。

FindCommand(CommandID)

指定したコマンド ID を検索し、それに関連付けられているメニュー コマンドを返します。

GlobalInvoke(CommandID)

指定したコマンド ID に一致するメニューまたはデザイナー動詞コマンドを呼び出します。

RemoveCommand(MenuCommand)

指定した標準メニュー コマンドをメニューから削除します。

RemoveVerb(DesignerVerb)

グローバル デザイナー動詞のコレクションから、指定したデザイナー動詞を削除します。

ShowContextMenu(CommandID, Int32, Int32)

指定した場所にある指定したショートカット メニューを表示します。

適用対象

こちらもご覧ください