如果没有选择任何内容,则不显示上下文菜单

问题描述:

如果在WinForms c#应用程序的列表框中实际选择某个项目,我只想显示上下文菜单。如果没有选择任何内容,则不显示上下文菜单

目前,如果正确点击右键,我可以选择一个项目,如果没有选择任何项目,我可以禁用右键单击菜单,但是,我不希望菜单显示出来。

这怎么能实现?

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

    } 

我自己尝试了这两种情况,它只适用于启用。
也许开幕并不是选择正确的事件?
的Tx

尝试这种情况:

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

这是正确的做法。 +1 – MadBoy 2010-03-09 15:45:39

简单,

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

    } 

我根据其是否适合所选择的特定GUI元件通常设置每个上下文菜单项的属性。也许通过在每个菜单项上设置可见属性,而不是在整个菜单上,你可以得到你想要的结果。

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


    } 

我看到了什么时候上面做了相反我稍微反转了代码。出于某种原因,平等也没有奏效。