2017-10-21 31 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; 
    } 
} 
相关问题