问题描述
如图,我现在想实现用鼠标按住左键,然后移动鼠标,当我松开鼠标的时候在我按住左键到松开左键中移动的位置的全部控件被选择,并且获取他们的信息,怎么实现呢?纠结了好久,求大神帮帮忙
解决方案
解决方案二:
解决方案三:
就跟桌面的一样,只是多了要获取他们的信息
解决方案四:
根据坐标。只要小于松开后鼠标位置的控件location都选中。
解决方案五:
解决方案六:
根据坐标?是给每个控件一个坐标吗?能具体点吗?
解决方案七:
鼠标左键按下移动松开,能得到一个矩形Rectangle,然后遍历当前页面的控件foreach(varcontrolinthis.Controls),每个控件同样也能得到一个Rectangle,然后根据第一个Rectangl.IntersectsWith(每个控件的Rectangle)==true的话,说明重叠,那么此时的控件就是你选中的控件。
解决方案八:
我刚才试了下,鼠标左键按下移动松开,是没有矩形的,也没有选中所谓的控件
解决方案九:
这个帖子也是你的吧.
解决方案十:
引用6楼BitCoffee的回复:
鼠标左键按下移动松开,能得到一个矩形Rectangle,然后遍历当前页面的控件foreach(varcontrolinthis.Controls),每个控件同样也能得到一个Rectangle,然后根据第一个Rectangl.IntersectsWith(每个控件的Rectangle)==true的话,说明重叠,那么此时的控件就是你选中的控件。
经过一个星期的研究终于实现了,不过还是有一些小瑕疵,具体的明天上班再优化吧,先来说一下代码就向楼上说的一样,用两个事件,一个是鼠标点击时的时间_MouseDown(坐标作为矩形框的左上角坐标),一个是鼠标松开时的事件_MouseUp(坐标作为矩形框的右下角)
解决方案十一:
然后就要获取鼠标按下前和按下后的鼠标所在的坐标位置,然后再遍历控件的时候求出每个控件的中心坐标位置,也就是Location坐标加上2/1的宽和高,并跟鼠标按下前和按下后的坐标大小判断就可以了
解决方案十二:
引用10楼ActionSnail的回复:
然后就要获取鼠标按下前和按下后的鼠标所在的坐标位置,然后再遍历控件的时候求出每个控件的中心坐标位置,也就是Location坐标加上2/1的宽和高,并跟鼠标按下前和按下后的坐标大小判断就可以了
其实不用计算中心位置的,遍历每个控件,那么根据控件的left,top,width,height等属性同样能得到一个矩形框,用Rectangle鼠标.IntersectsWith(Rectangle控件)==true,则说明此控件被选中.
解决方案十三:
引用11楼BitCoffee的回复:
Quote: 引用10楼ActionSnail的回复:
然后就要获取鼠标按下前和按下后的鼠标所在的坐标位置,然后再遍历控件的时候求出每个控件的中心坐标位置,也就是Location坐标加上2/1的宽和高,并跟鼠标按下前和按下后的坐标大小判断就可以了其实不用计算中心位置的,遍历每个控件,那么根据控件的left,top,width,height等属性同样能得到一个矩形框,用Rectangle鼠标.IntersectsWith(Rectangle控件)==true,则说明此控件被选中.
你判断坐标点得到的不太准确,如果鼠标拖动正好在一个控件的左上角,没有超过此控件的中心点,那么此控件根据你的方法是选不中的.