Freigeben über


IMenuCommandService-Schnittstelle

Stellt Methoden bereit, mit denen Sie die im Entwurfsmodus verfügbaren globalen Designerverben und Menübefehle verwalten sowie einige Typen von Kontextmenüs anzeigen können.

Namespace: System.ComponentModel.Design
Assembly: System (in system.dll)

Syntax

'Declaration
<ComVisibleAttribute(True)> _
Public Interface IMenuCommandService
'Usage
Dim instance As IMenuCommandService
[ComVisibleAttribute(true)] 
public interface IMenuCommandService
[ComVisibleAttribute(true)] 
public interface class IMenuCommandService
/** @attribute ComVisibleAttribute(true) */ 
public interface IMenuCommandService
ComVisibleAttribute(true) 
public interface IMenuCommandService

Hinweise

Diese Schnittstelle stellt Methoden für folgende Aktionen bereit:

  • Suchen nach bzw. Aufrufen, Hinzufügen und Entfernen von globalen Designerverbbefehlen

  • Suchen nach bzw. Aufrufen, Hinzufügen und Entfernen von Standardmenübefehlen

  • Ändern der den Standardmenübefehlen zugeordneten Ereignishandler

  • Anzeigen eines Kontextmenüs mit Standardbefehlen, dem eine Menü-CommandID zugeordnet ist

Designerverben stellen benutzerdefinierte Befehle dar, die im Entwurfsmodus im Kontextmenü aufgelistet werden. Ein Designerverb kann eine angegebene Textbezeichnung bereitstellen. Jedem Designerverb wird automatisch eine eindeutige CommandID zugewiesen. Ein Designer kann Designerverben über seine Verbs-Eigenschaft bereitstellen, doch diese sind nur verfügbar, solange die Komponente des Designers aktuell ausgewählt ist. Globale Designerverben sind Designerverbbefehle, auf die unabhängig von der ausgewählten Komponente in einem Kontextmenü im Entwurfsmodus zugegriffen werden kann. Diese Schnittstelle ermöglicht Ihnen die Verwaltung der Gruppe der im Entwurfsmodus verfügbaren globalen Designerverben.

Mit der AddVerb-Methode können Sie ein globales Designerverb hinzufügen. Mit der RemoveVerb-Methode können Sie ein globales Designerverb entfernen. Sie können ein Designerverb mit der GlobalInvoke-Methode aufrufen, wenn Ihnen die CommandID des Verbs bekannt ist. Die Verbs-Eigenschaft dieser Schnittstelle enthält die aktuelle Gruppe der in einem Kontextmenü anzuzeigenden Designerverbbefehle. Diese Gruppe von Designerverbbefehlen besteht aus allen globalen Designerverben sowie aus allen Designerverben, die vom Designer einer aktuell ausgewählten Komponente bereitgestellt werden. Sie wird jedes Mal aktualisiert, wenn eine Komponente ausgewählt bzw. die Auswahl einer Komponente aufgehoben wird, deren Designer Designerverbbefehle bereitstellt.

Menübefehle sind auf die Gruppe der vordefinierten Standardbefehle beschränkt. Die meisten vordefinierten Standardbefehle sind in der StandardCommands-Enumeration und der MenuCommands-Enumeration definiert. Sie können Menübefehle hinzufügen, entfernen und aufrufen sowie nach Menübefehlen suchen, die einem Menü mithilfe der Methoden dieser Schnittstelle hinzugefügt wurden.

Mit der AddCommand-Methode können Sie einen Standardmenübefehl hinzufügen. Mit der RemoveCommand-Methode können Sie einen Standardmenübefehl entfernen. Wenn Sie einen Ereignishandler an einen vordefinierten Standardmenübefehl anfügen möchten, führen Sie die in der Dokumentation für die AddCommand-Methode detailliert beschriebene Prozedur aus. Wenn ein Menübefehl einem Menü mit der FindCommand-Methode hinzugefügt wurde, können Sie diesen über CommandID abrufen. Mit der GlobalInvoke-Methode können Sie einen Menübefehl oder Designerverbbefehl über CommandID aufrufen.

Hinweis

Wenn Sie versuchen, einen Menübefehl mit einer bereits vorhandenen CommandID hinzuzufügen, wird eine InvalidOperationException ausgelöst. Beim Hinzufügen eines Menübefehls müssen Sie mit der FindCommand-Methode sicherstellen, dass sich der Befehl nicht bereits in einem Menü befindet, oder die Ausnahmebehandlung sinnvoll verwenden.

Hinweis

Einem Menü kann ein Menübefehl hinzugefügt werden, dessen Visible-Eigenschaft oder Enabled-Eigenschaft auf false festgelegt ist. Wenn ein Menübefehl, der einem Menü hinzugefügt wurde, nicht angezeigt wird, ist möglicherweise eine dieser Eigenschaften auf false festgelegt.

Mit der ShowContextMenu-Methode können Sie bestimmte Standardkontextmenüs, die Menübefehle enthalten, an einer angegebenen Position anzeigen. Die Dokumentation zu dieser Methode enthält eine Tabelle mit den Befehls-IDs, die die gültigen anzuzeigenden Menüs angeben.

Beispiel

Dieses Beispiel veranschaulicht die Verwendung des IMenuCommandService zum Hinzufügen eines 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." );
      }
   };
}

Plattformen

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 unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

IMenuCommandService-Member
System.ComponentModel.Design-Namespace
MenuCommand
DesignerVerb-Klasse
CommandID-Klasse
MenuCommands
StandardCommands