我正试图在右键单击列表框中的项目时显示上下文菜单。所以我将“用户”列表绑定到我的列表框中。然后我有点迷茫。我以为我可以预先查看列表并在listboxitems上添加一个mouserightdown事件,但我无法弄清楚如何。
这是一个好方法,还是有人知道一种更好的方式来实现我想要的东西。
提前致谢。
答案 0 :(得分:1)
这将有效:
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
Point p = new Point(e.X, e.Y);
listBox1.SelectedIndex = listBox1.IndexFromPoint(p);
contextMenuStrip1.Show();
}
}
编辑:sry太晚了;)
答案 1 :(得分:1)
您可以做两件事来解决您遇到的问题:
1)如果您使用usercontrols填充列表框,则可以向其添加点击事件。
2)如果您将一个上下文菜单添加到列表框中,右键单击一个项目将自动打开上下文菜单,因此您不必向其添加单击事件。
答案 2 :(得分:0)
也许你可以从列表框进入Mousedown事件,选择该项目。 或者在没有选择项目的情况下右键单击?
答案 3 :(得分:0)
自从我这样做了一段时间,但如果我没记错的话:
列表框确实有我认为的方法......
编辑: 在这里,有一些代码:
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button != System.Windows.Forms.MouseButtons.Right)
return;
int index = listBox1.IndexFromPoint(e.X, e.Y);
MessageBox.Show(listBox1.Items[index].ToString());
}
显然,如果此时有一个项目等,你需要添加一些错误检查。
答案 4 :(得分:0)
我会回答你的问题:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/2c8f00ca-9c7d-4237-b2cf-f60911a008a9
答案 5 :(得分:-1)
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
Point p = new Point(e.X, e.Y);
listBox1.SelectedIndex = listBox1.IndexFromPoint(p);
contextMenuStrip1.Show();
}
}