2010-03-09 15 views
6

Lubię menu kontekstowe wyświetlać tylko wtedy, gdy element jest faktycznie wybrany w polu listy w aplikacji C# winforms.Nie pokazuj menu kontekstowego, jeśli nic nie jest wybrane

Obecnie jestem w stanie wybrać pozycję, jeśli jest poprawnie kliknięta prawym przyciskiem i mogę wyłączyć menu po kliknięciu prawym przyciskiem, jeśli nic nie jest wybrane, jednak nie chcę, aby menu było wyświetlane.

Jak można tego dokonać?

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

    } 

Próbowałem obu tych sytuacji na własną rękę i działa tylko dla włączone.
Być może otwarcie nie jest właściwym wydarzeniem do wyboru?
Tx

Odpowiedz

11

Spróbuj tego:

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

To poprawne podejście. +1 – MadBoy

4

Łatwe,

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

    } 
0

I zazwyczaj ustawić właściwości każdego elementu menu kontekstowego zgodnie z jego stosowności dla danego elementu GUI, który jest zaznaczony. Być może ustawiając widoczny atrybut na każdym elemencie menu, a nie na całym menu, możesz uzyskać pożądane rezultaty.

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


    } 

Zobaczyłem, kiedy powyższe nastąpiło odwrotnie, nieznacznie odwróciłem kod. Z jakiegoś powodu posiadanie równości również nie zadziałało.

Powiązane problemy