Pergunta

Eu tenho um requisito para esconder o ContextMenuStrip quando uma bandeira particular não está definido. Como eu não acho que podemos controlar explicitamente o show / hide da tira menu de contexto, i decidiu prender o botão direito do rato no controlo com o qual o ContextMenuStrip está associado. É um UserControl, então eu tentei lidar com isso de MouseClick evento dentro do qual eu verificar se o sinalizador está definido e se o botão é um botão direito. No entanto, para minha surpresa, o evento não ser demitido em cima mouse clique direito, mas incêndios única para Esquerda Clicar.

Existe alguma coisa errada comigo ou existe alguma solução?

CLIQUE DIREITO está recebendo detectado, pergunta do título e descrição Mudou

Depois de fazer mais algumas pesquisas, eu tenho o rightclick ao fogo, quando eu segurei o evento MOUSE_DOWN no ??Controle. No entanto ainda estou à nora, como a forma como para impedir explicitamente o ContextMenuStrip De Carregando . Outra questão é, por que MouseClick não detectou Botão Right Click?


solução atual

O registro do manipulador de eventos

   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;
        }

    }

Esta é a solução atual que estou fazendo. Mas como posso alterá-lo no Evento de Abertura do ContextMenuStrip

Foi útil?

Solução

A sua solução irá falhar de qualquer maneira quando o menu de contexto é invocado com a tecla de menu de contexto (ou o que é chamado) no teclado. Você pode usar o evento Opening para cancelar a abertura de um menu de contexto.

Outras dicas

Há um trabalho em torno.

Vamos dizer que item de menu A define o sinalizador que controla o menu de contexto no controle B.

No evento clique para A, você definir b.ContextMenu = nada para desligá-lo e definir b.ContextMenu volta para o controle menu de contexto para ligá-lo novamente.

Em WinForms há também o evento Click -. Que não ser demitido por um clique direito do mouse

Se você estiver usando WPF você deve ter eventos MouseRightButtonDown e MouseRightButtonUp.

Confira a tabela neste MSDN página que listas que controles elevar eventos que clique. Significativamente, Button, CheckBox, RichTextBox e RadioButton (e alguns outros) não levantam e evento do botão direito.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top