Winfrom实现多选

问题描述

如图,我现在想实现用鼠标按住左键,然后移动鼠标,当我松开鼠标的时候在我按住左键到松开左键中移动的位置的全部控件被选择,并且获取他们的信息,怎么实现呢?纠结了好久,求大神帮帮忙

解决方案

解决方案二:

解决方案三:
就跟桌面的一样,只是多了要获取他们的信息
解决方案四:
根据坐标。只要小于松开后鼠标位置的控件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,则说明此控件被选中.

你判断坐标点得到的不太准确,如果鼠标拖动正好在一个控件的左上角,没有超过此控件的中心点,那么此控件根据你的方法是选不中的.

时间: 2024-11-19 02:19:28

Winfrom实现多选的相关文章

c#winfrom 如何在子窗体中获取 父窗体中的datagridview选中行的id?

问题描述 c#winfrom 如何在子窗体中获取 父窗体中的datagridview选中行的id? c#winfrom 如何在子窗体中获取 父窗体中的datagridview选中行的id? 解决方案 用this.dataGridView1.CurrentRow.Cells[0].Value获得id 窗体传值看我的代码http://bbs.csdn.net/topics/360140208 解决方案二: 用委托或事件传递也可以 解决方案三: 通过静态字段传过去,在父窗体的选中事件下获取选中行的id

控件-在C# Winfrom中gridview的分组问题

问题描述 在C# Winfrom中gridview的分组问题 我在画面上拉了个控件 控件是Dev 的GridView 我现在在这个GridView中做了分组 父级的gridview 的值是加总 分组内的gridview的值 我现在展开了 grid的加号 焦点停在 分组里的grid 这个时候我如何获取 当前选中的分组内的grid的当前行 求大神帮忙~ 解决方案 C# GridView分组 解决方案二: 方法一:SelectedIndex 获取gridview当前选中行的内容 txtid.Text

datagridview-winfrom DataGridView 如何获取到选中行的某个字段?

问题描述 winfrom DataGridView 如何获取到选中行的某个字段? winfrom DataGridView控件如何获取到 选中行的某个字段 比如说 DataGridView显示的列表中 我只要其中的两三个字段,当我点击其中某一行的时候就获取这个选中行的 这两三字段 然后传到js中 让js获取 这个如何实现 尽量给代码! 解决方案 在datagridview.Selected情况下,设定选中你要的字段.datagridview.Rows[x].count[y] 解决方案二: thi

winfrom-DataGridViewCheckBoxColumn 无法手动控制是否勾选

问题描述 DataGridViewCheckBoxColumn 无法手动控制是否勾选 请问在winfrom 中 dataGridView 使用DataGridViewCheckBoxColumn 先在的想加一个需求,点解复选框 程序会判断一个业务是否成立 成立则勾选 不成立 则点了也不勾选 ,高手们如何实现 .....求助 我试过了在 事件中给 复选框的value赋值 true .false 值是付进去了但是 不起作用 private void dataGridView1_CellMouseCl

c# winfrom 为什么计时器停止不了 看下面代码

问题描述 c# winfrom 为什么计时器停止不了 看下面代码 private void comYouhua_CheckedChanged(object sender, EventArgs e) { System.Timers.Timer t = new System.Timers.Timer(10000); //实例化Timer类,设置间隔时间为10000毫秒: if (comYouhua.Checked == true) { t.Elapsed += new System.Timers.E

[急!] c#如何直接操作ppt的图表数据,winfrom下mschart图表如何倒入到excel或ppt中

问题描述 如题如示,在网上查了下c#直接操作ppt的例子,但都只是很简单的写了下打开PPT插入标题插入一个图表等,但是都没有更具体的有如何可以直接更改PPT图表的数据源数据的例子.我现在的需求是,我有一个PPT的模板,里面有图表.有表格,当然还有最简单的文本,我现在想用程序去修改这个PPT中的内容,比如改图表数据源的数据,表格的数据等,却不知如何操作,找不到例子,只需要一个最简单的代码例子告诉我如何去操作就可以了,有哪位大大有这方面的经验,能否指教一下,万分感谢哦,对了,还有就是我用vs2010

求高手解答 急!winfrom 程序如何在 PDA CE 系统上运行

问题描述 winfrom已用C#开发完成用的是.net2.0PDA是symbolmc3100,CE2.0也安装了,就是程序还是无法运行一直提示请安装2.0重启了N次不知道什么问题求大神们解答! 解决方案 解决方案二:在线等,急急急!解决方案三:winCEmobile之类的PDA程序,新建立项目的时候就应该选:智能设备->智能设备项目,而不是什么WinForm.解决方案四:请查看PDA开发,这是一个单独的应用程序,请先学习HelloWorld解决方案五:运行不了.解决方案六:运行不了,两者的.ne

vs2010 数据的多选一-用vs2010进行网页设计的数据的多选一问题

问题描述 用vs2010进行网页设计的数据的多选一问题 按照一定条件在数据库中搜索,有多条结果显示,选择其中的一条,类似于12306的订票选择过程,搜索结果是可以放在特殊的可选择控件中,还是得重新建数据库存放结果?求C#代码

spinner多选-spinner改写成下拉条目可以多选问题

问题描述 spinner改写成下拉条目可以多选问题 项目中之前用spinner下拉框选一个,现在需求改为可以多选,那spinner下拉选项如何实现多选,重写什么方法呢?