[英]ListBoxes using same context menu with different items, On ListBox Click event
我有3个列表框,在MouseDown事件上,我希望它们显示相同的上下文菜单,但是每个不同的列表框单击上的项目都会有所不同。 例如:
- contextMenu when clicked on :listBox1
* should show: {Edit,Add Items}
- contextMenu when clicked on :listBox2
* should show: {Remove, Add Price}
- contextMenu when clicked on :listBox3
* should show: {something, Remove}
以下是我用于listBox1的代码:
private void MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
listBx_1.SelectedIndex = listBx_1.IndexFromPoint(e.Location);
if (listBx_1.SelectedIndex != -1)
{
listboxContextMenu_Opening();
}
}
}
private void listboxContextMenu_Opening()
{
listboxContextMenu.Items.Clear();
listboxContextMenu.Items.Add("Edit");
listboxContextMenu.Items.Add("Add Items");
}
现在我想使用MouseDown事件添加listBox2和listBox3上下文菜单(所有三个listBoxes的菜单相同)项,我该如何实现呢? 欢迎提出建议!!
最好创建3个单独的列表框ContextMenus。 这样,您就无需注意MouseDown。
但是您可以通过在MouseDown上动态编辑其ContextMenu来实现。
创建一个包含所有项目的ContextMenu,并在MouseDown中添加以下内容。 然后将其所有MouseDown事件分配给MouseDown
。
private void MouseDown(object sender, MouseEventArgs e)
{
ListBox l = (ListBox) sender;
if (e.Button == MouseButtons.Right)
{
l.SelectedIndex = l.IndexFromPoint(e.Location);
if (l.SelectedIndex != -1)
{
if (l.Name == "listBox1")
{
listboxContextMenu.Items.Clear();
listboxContextMenu.Items.Add("Edit");
listboxContextMenu.Items.Add("Add Items");
}
else if(l.Name = "listBox2")//etc
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.