【发布时间】:2013-07-17 05:00:24
【问题描述】:
我有 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 的相同菜单)项目 ,我怎么能做到这一点?欢迎提出建议!
【问题讨论】:
-
为什么它们都需要是同一个菜单?您显然拥有三个不同的菜单,因此为每个 ListBox 提供自己的自定义菜单是有意义的。
-
好吧,如果我想在三个不同的列表框单击上调用相同的 MouseDown 事件(如上定义),那么让我们考虑一下我现在为它们提供了三个不同的 contextMenu。那么应该如何在 MouseDown 事件中更改我的代码??
-
您只需创建三个单独的 MouseDown 事件处理程序并为每个 ListBox 分配一个