2010-03-09 9 views
6

Me gusta que un menú contextual solo aparezca si un elemento está realmente seleccionado en un cuadro de lista en una aplicación winforms C#.No mostrar el menú contextual si no se selecciona nada

Actualmente, puedo seleccionar un elemento si se hace clic con el botón derecho, y puedo desactivar el menú contextual si no se selecciona nada, sin embargo, no quiero que el menú aparezca.

¿cómo se puede lograr esto?

private void genPassMenu_Opening(object sender, CancelEventArgs e) 
    { 
     genPassMenu.Enabled = lstPasswords.SelectedIndex > 0; 
     genPassMenu.Visible = lstPasswords.SelectedIndex > 0; 

    } 

Intenté ambas situaciones por sí solos, y solo funciona para habilitado.
Quizás la apertura no es el evento correcto para elegir?
Tx

Respuesta

11

Prueba esto:

private void genPassMenu_Opening(object sender, CancelEventArgs e) 
{ 
    //if (lstPasswords.SelectedIndex == -1) e.Cancel = true; 
    e.Cancel = (lstPasswords.SelectedIndex == -1); 
} 
+0

Su enfoque es correcto. +1 – MadBoy

4

Fácil,

private void genPassMenu_Opening(object sender, CancelEventArgs e) 
    { 
     e.Cancel = (lstPasswords.SelectedIndex == 0); 

    } 
0

Me suelen establecer las propiedades de cada elemento del menú contextual en función de su idoneidad para el elemento de interfaz gráfica de usuario particular que se seleccione. Tal vez al establecer el atributo visible en cada elemento del menú, en lugar de en todo el menú, puede obtener los resultados que desee.

0
private void genPassMenu_Opening(object sender, CancelEventArgs e) 
    { 
     //genPassMenu.Enabled = lstPasswords.SelectedIndex > 0; 
     //genPassMenu.Visible = lstPasswords.SelectedIndex > 0; 
     e.Cancel = (lstPasswords.SelectedIndex <= 0); 


    } 

Vi cuando lo anterior hacía lo contrario invertí el código ligeramente. Por alguna razón, tener la igualdad tampoco funcionó.

Cuestiones relacionadas