2009-11-14 73 views
0

我有一个列表框,它填充了项目,我想知道如何:添加右键/上下文菜单列表框项目在C#

  1. 当你在列表框中点击右键,该的RightClicked项目将被选中,
  2. 一个右键菜单将有几个项目被显示..
  3. 当你点击任何项目,相应的空白将被触发的
  4. ...

在此先感谢您的帮助和代码ex请给我点心!

+0

“一相应的空白将被触发“:这是什么意思?我认为你的意思是根据用户选择哪个菜单项来触发一个方法/程序。 – BillW 2009-11-14 09:03:06

+1

wpf或winforms? – Peter 2009-11-14 09:25:45

+0

这是一个有用的问题;它只是需要一些小的编辑。 – JYelton 2010-05-18 19:03:10

回答

0

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

+3

一个MouseClick事件不会被上下文点击触发一个ListBox。 – BillW 2009-11-14 09:21:28

4

这对我来说就像是一个“家庭作业”问题,所以我会回答(我希望)给你几个指针来解决这个问题。

一期

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

...

二期

  • 运行测试程序并观察报告什么事件鼠标左键向下和右的区别 - 鼠标向下(假设您的环境将上下文点击设置为鼠标右键......这可能不适用于所有人)。

  • 专注于您可以通过上下文单击进行截取的一个事件。

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

  • 验证您现在可以右键点击列表框和上下文菜单中就会出现一个项目,但该事件仍是处理案件被处理程序YOU“发现”,在步骤2中

  • 现在去通过列表框的所有事件处理程序,并找出哪一个可以用来检测,给定列表框中的某个位置,哪个列表项被“命中”。

  • 一旦你可以确定右键单击哪个List Item,并且你知道你的上下文菜单正在工作,你只有确保右键单击的List Item被选中的问题,这很容易。

  • 想象一下,你自己会教会你几个非常有用的东西,你稍后可以在其他控件编程中使用。

    好运,比尔

    0

    1.当你右击在列表框中,是正确的点击项将被选中

    2.A右键菜单将有几个项目被显示..

    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 
         } 
    
    相关问题