繁体   English   中英

在C#中的列表框项中添加右键单击/上下文菜单

[英]Adding a right click / context menu to listbox items in C#

我有一个ListBox,并且其中装有项,id想知道如何:

  1. 当您在列表框中右键单击时,将选择右键单击的项目,
  2. 将会显示一个右键菜单,其中包含多个项目。
  3. 当您单击任何项​​目时,将触发相应的空白。

在此先感谢您的帮助,并提供示例代码!

在我看来,这就像一个“作业”问题,因此我将(希望)为您提供一些自己解决问题的指导。

第一阶段

  1. 用ListBox创建一个示例项目
  2. 为MouseClick,MouseDown和Click事件定义事件处理程序。
  3. 放置一个Console.WriteLine(“一些适当的文本”); 每个处理程序中的语句,以便您可以在Visual Studio的“输出窗口”中查看并查看调用了哪个事件处理程序。

...

第二阶段

  1. 运行测试程序,观察鼠标左键按下和鼠标右键按下时报告的事件之间的差异(假设您的环境将上下文单击设置为鼠标右键...可能并非每个人都正确)。

  2. 专注于可以通过上下文单击来拦截的一个事件。

  3. 将上下文菜单添加到测试项目,并将该上下文菜单设置为ListBox的上下文菜单。

  4. 验证您现在可以右键单击ListBox中的一个项目,并显示上下文菜单,但该事件仍由您在步骤2中“发现”的处理程序处理。

  5. 现在,遍历ListBox的所有事件处理程序,并在给定ListBox中的特定位置的情况下,找出可以用来检测哪个列表项被“命中”。

  6. 一旦您可以确定右键单击了哪个列表项,并且知道上下文菜单正在工作,就只需要确保选择了右键单击的列表项就可以了:这很容易。

自己弄清楚这一点将教给您一些非常有用的知识,您以后可以在对其他控件进行编程时使用它们。

祝你好运,比尔

首先,您需要订阅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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM