Condividi tramite


Procedura: modificare l'aspetto di un comando

È possibile fornire informazioni all'utente modificandone l'aspetto di un comando. Ad esempio, è necessario un comando apparire diverso quando non sono disponibili. È possibile rendere i controlli disponibili o non disponibili, li nascosto o visualizzarli, o vengono archiviate o deselezionato scegliere dal menu.

Per modificare l'aspetto di un comando, eseguire una di queste azioni:

  • Specificare i flag appropriati nella definizione di comando nel file di tabella dei comandi.

  • utilizzare il servizio di OleMenuCommandService .

  • Implementare l'interfaccia di IOleCommandTarget e modificare oggetti command non elaborati.

Nei passaggi seguenti viene illustrato come trovare e aggiornare l'aspetto di un comando tramite il pacchetto gestito Framework (MPF).

Per modificare l'aspetto di un comando di menu

  1. Seguire le istruzioni in Procedura: Per modificare il testo di un comando di menu creare una voce di menu denominata nuovo testo.

  2. Nel file di origine di un VSPackage denominato, ad esempio, MenuTextPackage.cs, aggiungere le righe seguenti alla fine del metodo di MenuItemCallback .

    var command = sender as OleMenuCommand;
    if (command.Text == "New Text") EnableMyCommand(command.CommandID.ID, false);
    
  3. Ottenere il comando che si desidera aggiornare dall'oggetto di OleMenuCommandService quindi impostare le proprietà appropriate sull'oggetto comando. Ad esempio, il seguente metodo conferisce il comando specificato da un VSPackage a ordinare disponibile o non disponibile impostato.

    <PrincipalPermission(SecurityAction.Demand)> _
    Public Function EnableMyCommand(ByVal cmdID As Integer, ByVal fEnableCmd As Boolean) As Boolean 
        Dim fCmdUpdated As Boolean = False 
        Dim mcs As OleMenuCommandService = TryCast(Me.GetService(GetType(IMenuCommandService)), OleMenuCommandService)
        Dim newCmdID As CommandID = New CommandID(GuidList.guidMenuTextCmdSet, cmdID)
        Dim mc As MenuCommand = mcs.FindCommand(newCmdID)
        If mc IsNot Nothing Then
            mc.Enabled = fEnableCmd
            fCmdUpdated = True 
        End If 
        Return fCmdUpdated
    End Function
    
    [PrincipalPermission(SecurityAction.Demand)]
    public bool EnableMyCommand(int cmdID, bool fEnableCmd)
    {
        bool fCmdUpdated = false;
        var mcs = this.GetService(typeof(IMenuCommandService))
                as OleMenuCommandService;
        var newCmdID = new CommandID(GuidList.guidMenuTextCmdSet, cmdID);
        MenuCommand mc = mcs.FindCommand(newCmdID);
        if (mc != null)
        {
            mc.Enabled = fEnableCmd;
            fCmdUpdated = true;
        }
        return fCmdUpdated;
    }
    

    In questo modo la voce di menu denominata nuovo testo non disponibile dopo che è stato fatto clic.

Vedere anche

Concetti

Come Vspackage aggiunge gli elementi dell'interfaccia utente dell'IDE

Altre risorse

Controlli, menu e barre degli strumenti

Attività comuni con i controlli, i menu e le barre degli strumenti

Tabella dei comandi di Visual Studio (. file di Vsct)