如题
例如:在windowns程序中 按下ctrl+鼠标左键进行多个选择

解决方案 »

  1.   

    啥意思,没明白。选中窗体按ctrl+a不就全选了吗?
      

  2.   

    用鼠标 左键+ Ctrl 键   
      

  3.   

    to netnpc:
     - -!就是要的运行时候的
      

  4.   

    好像不能,之前我也想在运行的时候选择多个控件,如多个button,但打听了多方后结果是不可以,同一时刻里只能有一个控件获得焦点。
      

  5.   

    在程序里添加一个List<Control>的列表,用来记录鼠标点过控件,并给点过的控件改变颜色或或使用Graphics绘制选中状态,然后通过List<Control>来统一操作这些选中的控件就是了。
      

  6.   

    我就是用hbxtlhx说的那种方法作的,楼主可以试试。
      

  7.   

    处理鼠标的MouseUp事件(还是其它事件,忘了)可以得到二个点(形成一个矩形框),再判断哪些控件在这个矩形框就行了
      

  8.   

    zxkid,怎么判断?如果是运行时创建的多个控件,而且创建后就扔掉了,也就是没办法引用了,怎么判断在这个矩形框里有没有控件?什么类型的控件,有多少个?
      

  9.   

    to hbxtlhx :
    你说的也只是个思路问题 麻烦给个具体实现 你说的思路 而且有些只是点到为止 也不算是一个完整的解决方案还有就是我是想通过按下ctrl+鼠标左键 来进行多个控件的选择 
      

  10.   

    完成一半了 贴出来 大家分享一下 
    因为想做成VS设计时候的样子 所以接下来的工作比较复杂 望能给出完整的解决方案        private const int LCTRL = 162;
            private const int RCTRL = 163;        [DllImport("user32.dll")]
            public static extern short GetKeyState(int nVirtKey); 
     private void button2_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left && (GetKeyState(LCTRL) < 0 || GetKeyState(RCTRL) < 0))
       {
              
        }       
    }
      

  11.   

    你这样取不到是什么控件吧?我觉得楼主得将很多控件重写,Form要增加一个List属性保存这些选择的控件或者控件Id,建一堆自己要用的控件,这些控件都要实现自定义的接口,这个接口需要增加个事件,一个属性,重载OnClick事件,当是e.Button   ==   MouseButtons.Left   &&   (GetKeyState(LCTRL)   <   0   ¦ ¦   GetKeyState(RCTRL)   <   0)的时候,就触发这个事件,设置属性,在事件的委托处理中根据这个属性将该控件放到或者移除,剩下的就简单了啊
    工作量应该很大的