刚用C#,不知道checkedListBox控件列出的LIST项中,怎样才能在一个LIST点击鼠标右键时,选定右键选点击的LIST项,并弹出菜单.我现在弹出菜单可以,但是不知道怎样才能实现右键点击时,象左键一样,选定右键点击的LIST项.请问高手有办法吗?十分感谢!

解决方案 »

  1.   

    我已经用ContextMenuStrip实现了右键弹出菜单,没有实现右键点击选定LIST中的项.
      

  2.   

    楼主是想再list上点击右键实现选择并弹出菜单?如果是这样的话,CS项目中是很少见,一般是左键点击一项后,再右键弹出菜单,就像windows下选择文件后才能右键打开改文件的右键菜单。
      

  3.   

    是的,WINDOWS下点击右键实现了选择文件并同时打开了右键菜单.我就是要实现这样的功能.
      

  4.   

    不熟悉那控件,给个思路。
        可能可以考虑处理下MouseDown。
      

  5.   

    谢谢!我就是用的MouseDown,可是处理不了.
      

  6.   

    看看是否有个类似MouseOverWhere之类的函数,找下鼠标在那个项上,然后选中该项。仅供参考,呵呵。
      

  7.   

    不管怎样,还是谢谢你了.我放弃CHECKLISTBOX了,改用LISTVIEW了.
      

  8.   

    mouseDown事件里面这么处理private void checkedListBox1_MouseDown(object sender, MouseEventArgs e)
            {
                if(e.Button == MouseButtons.Right)//判断是否右键点击
                {
                    Point p = e.Location;//获取点击的位置
                    int index=checkedListBox1.IndexFromPoint(p);//根据位置获取右键点击项的索引
                    checkedListBox1.SelectedIndex = index;//设置该索引值对应的项为选定状态
                    //checkedListBox1.SetItemChecked(index, true);//如果需要的话这句可以同时设置check状态
                }
            }
      

  9.   

     private void listbox_MouseDown(object sender, MouseEventArgs e)//listbox项右键
            {
                ListBox ltb = (ListBox)sender;
                if (e.Button == MouseButtons.Right)
                {
                    int posindex = ltb.IndexFromPoint(new Point(e.X,e.Y));
                    ltb.ContextMenuStrip = null;
                    if(posindex>=0&&posindex<ltb.Items.Count)
                    {
                        ltb.SelectedIndex=posindex;
                        ContextMenuStrip.Show(ltb,new Point(e.X,e.Y));
                    }
                }
                ltb.Refresh();
            }