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

时间:2009-11-14 05:54:00

标签: c# listbox contextmenu

我有一个ListBox,其中填充了项目,id喜欢知道如何:

  1. 右键单击列表框时,将选择右键单击的项目
  2. 右键菜单将显示多个项目..
  3. 当您点击任何项目时,将触发相应的空格。
  4. 提前感谢任何帮助,请提供代码示例!

3 个答案:

答案 0 :(得分:4)

这对我来说就像是一个“功课”问题,所以我将回答(我希望)给你一些指导,为你自己解决这个问题。

第一阶段

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

    第二阶段

    1. 运行测试程序并观察左下鼠和右下鼠报告的事件之间的差异(假设您的环境将上下文点击设置为鼠标右键...这可能不是适合每个人)。

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

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

    4. 确认您现在可以右键单击ListBox中的某个项目并显示上下文菜单,但事实仍然是由您在第2步中“发现”的处理程序处理。

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

    6. 一旦您确定右键单击了哪个列表项,并且您知道上下文菜单正在运行,您就只能确保选择右键单击的列表项:这很容易

    7. 自己解决这个问题会教你几个非常有用的东西,你可以在以后编程到其他控件时使用。

      祝你好运,比尔

答案 1 :(得分:0)

首先,您需要订阅ListBox.MouseClick事件。您将能够确定按下了什么按钮和光标坐标。然后,使用ListBox.IndexFromPoint方法查找单击的项目。您可以使用ListBox.SelectedIndex属性选择它。要显示上下文菜单,请使用ContextMenu或ContextMenuStrip类。有关上下文菜单的其他文档,请参见MSDN

答案 2 :(得分:0)

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
        }