2010-03-09 27 views
6

Ich möchte, dass ein Kontextmenü nur dann angezeigt wird, wenn ein Element in einer Listbox in einer winforms C# -Anwendung ausgewählt ist.Kontextmenü nicht anzeigen, wenn nichts ausgewählt ist

Derzeit kann ich ein Element auswählen, wenn es richtig angeklickt ist, und ich kann das Rechtsklick-Menü deaktivieren, wenn nichts ausgewählt ist, aber ich möchte nicht, dass das Menü überhaupt angezeigt wird.

Wie kann dies erreicht werden?

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

    } 

Ich habe beide dieser Situationen ausprobiert, und es funktioniert nur für aktiviert.
Vielleicht ist das Öffnen nicht das richtige Ereignis?
Tx

Antwort

11

Try this:

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

Es ist richtiger Ansatz. +1 – MadBoy

4

Einfach,

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

    } 
0

ich die Eigenschaften jedes Kontextmenüpunkt typischerweise eingestellt entsprechend ihrer Eignung für das jeweilige GUI-Element, das ausgewählt wird. Vielleicht können Sie, indem Sie das sichtbare Attribut für jedes Menüelement und nicht das gesamte Menü festlegen, die gewünschten Ergebnisse erzielen.

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


    } 

Ich sah, wenn das obige Gegenteil tat ich den Code leicht umgekehrt. Aus irgendeinem Grund funktionierte die Gleichheit auch nicht.

Verwandte Themen