2017-10-21 59 views
2

這是我在構造函數中我做:僅當listView不爲空時,我如何才能激活/啓用contextmenustrip菜單?

ListViewCostumControl.lvnf.ContextMenuStrip = contextMenuStrip1; 
ToolStripMenuItem item1 = new ToolStripMenuItem(); 
item1.Name = "Open File Folder Location"; 
item1.Text = "Open File Folder Location"; 
item1.Click += contextMenuStrip1_ItemClick; 
ToolStripMenuItem item2 = new ToolStripMenuItem(); 
item2.Name = "Launch File"; 
item2.Text = "Launch File"; 
item2.Click += contextMenuStrip2_ItemClick; 
ToolStripMenuItem item3 = new ToolStripMenuItem(); 
item3.Name = "Copy File"; 
item3.Text = "Copy File"; 
item3.Click += contextMenuStrip3_ItemClick; 
contextMenuStrip1.Items.Add(item1); 
contextMenuStrip1.Items.Add(item2); 
contextMenuStrip1.Items.Add(item3); 

但即使ListView控件lvnf是空的,它會顯示在右鍵菜單。 我希望只有當ListViewCostumControl.lvnf.Items.Count大於0時才能啓用菜單。

而且由於在程序中,listView可能會變得空白,不僅在運行程序時,我還需要在程序運行時檢查它,而不僅僅是一次啓動。

回答

1

您可以在ContextMenuStrip的「Opening」事件中執行此操作。 如果您不久雙擊contextMenuStrip1,將在代碼文件中創建一個函數並將其綁定到Opening事件。

將CancelEventArgs.Cancel屬性設置爲true將會阻止菜單打開。

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) 
{  
    var listView = (ListView)contextMenuStrip1.SourceControl; 
    if (listView.Items.Count == 0) 
    { 
     e.Cancel = true; 
    } 
} 
相關問題