2010-03-09 26 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 2010-03-09 15:45:39

4

簡單,

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); 


    } 

我看到了什麼時候上面做了相反我稍微反轉了代碼。出於某種原因,平等也沒有奏效。

相關問題