Domanda

Ho un requisito per nascondere il ContextMenuStrip quando un particolare flag non è impostato. Come non credo che siamo in grado di controllare in modo esplicito la mostra / nascondi della striscia menu di contesto, ho deciso di intrappolare il tasto destro del mouse sul controllo a cui è associato il ContextMenuStrip. È un controllo utente, così ho provato movimentazione è evento MouseClick cui interno controllo se è impostato il flag e se il pulsante è un tasto destro. Tuttavia con mia grande sorpresa, l'evento non viene licenziato su tasto destro del mouse, ma solo per gli incendi tasto sinistro del mouse.

C'è qualche cosa che non va in me o c'è alcuna soluzione?

CLICCA destra è ottenere rilevato, domanda del titolo e descrizione Cambiato

Dopo aver fatto qualche ricerca, ho avuto la rightclick al fuoco, quando ho gestito l'evento MOUSE_DOWN sul controllo. Tuttavia sono ancora all'oscuro, come come per evitare che in modo esplicito il ContextMenuStrip caricamento . Un altro essere domanda, perché MouseClick non ha rilevato Pulsante destro Click?


Soluzione alternativa corrente

Registrazione del gestore di eventi

   userControl1.Control1.MouseDown += new MouseEventHandler(Control1_MouseDown);

 void Control1_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right && flag == false)
        {
           userControl1.Control1.ContextMenuStrip = null;
        }
        else
        {
            userControl1.Control1.ContextMenuStrip = contextMenuStrip1;
        }

    }

Questa è la soluzione corrente che sto facendo. Ma come posso cambiarlo in caso di apertura del ContextMenuStrip

È stato utile?

Soluzione

La soluzione non riuscirà comunque quando il menu contestuale viene richiamato con il tasto del menu contestuale (o come si chiama) sulla tastiera. È possibile utilizzare l'evento Opening di annullare l'apertura di un menu di contesto.

Altri suggerimenti

C'è un lavoro in giro.

Diciamo Menu Voce A imposta il flag che controlla il menu di scelta rapida per il controllo B.

In caso clicca per A, si imposta b.ContextMenu = niente a spegnerlo, e impostare b.ContextMenu torna al controllo menu contestuale per riaccenderlo.

In WinForms c'è anche l'evento Click -. Che non licenziato per un clic destro del mouse

Se si utilizza WPF si dovrebbe avere eventi MouseRightButtonDown e MouseRightButtonUp.

Controlla la tabella in questa MSDN pagina che elenca che controlla sollevare eventi click. Significativamente, Button, CheckBox, RichTextBox e RadioButton (e pochi altri) non alzare ed evento sul tasto destro del mouse.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top