2010-03-09 4 views
6

Мне нравится иметь контекстное меню, только если элемент действительно выбран в списке в приложении winforms C#.Не показывать контекстное меню, если ничего не выбрано

В настоящее время я могу выбрать элемент, если он правильно щелкнул правильно, и я могу отключить меню правого щелчка, если ничего не выбрано, однако я не хочу, чтобы меню даже отображалось.

Как это можно сделать?

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

    } 

Я пробовал обе эти ситуации самостоятельно, и он работает только для разрешенных.
Возможно, открытие - это не то подходящее событие для выбора?
Tx

ответ

11

Попробуйте это:

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

Правильный подход. +1 – MadBoy

4

Easy,

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

    } 
0

Я обычно установить свойства каждого пункта контекстного меню в соответствии с его пригодности для конкретного GUI элемента, который выбран. Возможно, установив видимый атрибут для каждого элемента меню, а не всего меню, вы можете получить желаемые результаты.

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


    } 

Я видел, когда выше было наоборот, я немного изменил код. По какой-то причине равенство также не сработало.

Смежные вопросы