仅当listView不为空时,我如何才能激活/启用contextmenustrip菜单?
问题描述:
这是我在构造函数中我做:仅当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可能会变得空白,不仅在运行程序时,我还需要在程序运行时检查它,而不仅仅是一次启动。
答
您可以在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;
}
}