Prevenir explícitamente ContextMenuStrip de carga en C #
-
09-09-2019 - |
Pregunta
Tengo un requisito para ocultar la ContextMenuStrip cuando una bandera particular, no se ha establecido. Como no creo que podemos controlar explícitamente el mostrar / ocultar la tira de menú contextual, que decidí para atrapar el botón derecho del ratón sobre el control con el que está asociado el ContextMenuStrip. Es un control de usuario, por lo que intentó el manejo es MouseClick evento dentro de la cual puedo comprobar si el indicador está activado y si el botón es un botón de la derecha. Sin embargo, para mi asombro, el evento no se me disparen botón derecho del ratón, pero sólo para incendios clic izquierdo.
¿Hay algo de malo en mí o es cualquier solución?
de clic derecho es cada vez detectados, pregunta del título y la descripción ha cambiado
Después de hacer algunas investigaciones más, tengo el botón derecho del ratón para disparar, cuando manipula el Evento MOUSE_DOWN sobre el control. Sin embargo todavía estoy desorientado, como la forma para evitar explícitamente el ContextMenuStrip De Carga . Otro ser la pregunta, ¿por qué no detectó MouseClick botón Right Click?
solución actual
El registro del controlador 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 es la solución actual que estoy haciendo. Pero, ¿cómo puedo cambiarlo en el evento de apertura de la ContextMenuStrip
Solución
Su solución se producirá un error de todos modos cuando el menú contextual se invoca con la tecla de menú contextual (o lo que se llama) en el teclado. Usted puede utilizar el evento Opening
para cancelar la apertura de un menú contextual.
Otros consejos
Hay un trabajo alrededor.
Permite decir un elemento de menú establece el indicador que controla el menú contextual de control de B.
En el evento Click para A, se establece b.ContextMenu = nada para apagarlo, y establece b.ContextMenu de nuevo al control del menú contextual para volver a activarlo.
En WinForms también está el caso Click
-., Que se desencadena para el botón derecho del ratón
Si está utilizando WPF que debe tener eventos MouseRightButtonDown
y MouseRightButtonUp
.
Salida de la tabla de esta de MSDN página que enumera que controla provoca eventos cual clic. De manera significativa, Button, CheckBox, RadioButton y RichTextBox (y algunos otros) y no plantean evento el botón derecho del ratón.