[英]Adding a right click / context menu to listbox items in C#
我有一个ListBox,并且其中装有项,id想知道如何:
在此先感谢您的帮助,并提供示例代码!
在我看来,这就像一个“作业”问题,因此我将(希望)为您提供一些自己解决问题的指导。
第一阶段
...
第二阶段
运行测试程序,观察鼠标左键按下和鼠标右键按下时报告的事件之间的差异(假设您的环境将上下文单击设置为鼠标右键...可能并非每个人都正确)。
专注于可以通过上下文单击来拦截的一个事件。
将上下文菜单添加到测试项目,并将该上下文菜单设置为ListBox的上下文菜单。
验证您现在可以右键单击ListBox中的一个项目,并显示上下文菜单,但该事件仍由您在步骤2中“发现”的处理程序处理。
现在,遍历ListBox的所有事件处理程序,并在给定ListBox中的特定位置的情况下,找出可以用来检测哪个列表项被“命中”。
一旦您可以确定右键单击了哪个列表项,并且知道上下文菜单正在工作,就只需要确保选择了右键单击的列表项就可以了:这很容易。
自己弄清楚这一点将教给您一些非常有用的知识,您以后可以在对其他控件进行编程时使用它们。
祝你好运,比尔
首先,您需要订阅ListBox.MouseClick事件。 您将能够确定按下了哪个按钮以及光标坐标。 然后,使用ListBox.IndexFromPoint方法查找单击的项目。 您可以使用ListBox.SelectedIndex属性选择它。 要显示上下文菜单,请使用ContextMenu或ContextMenuStrip类。 MSDN中提供了有关上下文菜单的其他文档
1.在列表框中单击鼠标右键时,将选择右键单击的项目
2.将显示一个右键菜单,其中包含多个项目。
private void listBoxNode_MouseUp(object sender, MouseEventArgs e)
{
int location = listBoxNode.IndexFromPoint(e.Location);
if (e.Button == MouseButtons.Right)
{
listBoxNode.SelectedIndex = location; //Index selected
contextMenuStrip1.Show(PointToScreen(e.Location)); //Show Menu
}
}
3.单击任何项目时,将触发相应的空白。
private void showDetailsToolStripMenuItem_Click(object sender, EventArgs e)
{
//put your code here after clicking
//on items in context menu
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.