社区
C#
帖子详情
DataGridView的单击多选,求高手帮忙。谢谢
turboking
2013-03-29 09:53:30
实现的功能就是把鼠标单击单元格做成和按住CTRL单击效果一样。
看了一些别人的做法,两个思路
1、在单击时发送一个ctrl消息。
2、重写单击事件。
两个思路都不会用代码表达,个人很想用第二种方法。
...全文
168
10
打赏
收藏
DataGridView的单击多选,求高手帮忙。谢谢
实现的功能就是把鼠标单击单元格做成和按住CTRL单击效果一样。 看了一些别人的做法,两个思路 1、在单击时发送一个ctrl消息。 2、重写单击事件。 两个思路都不会用代码表达,个人很想用第二种方法。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
turboking
2013-03-29
打赏
举报
回复
感谢tanghuawei提供的网页连接,第三种方法我想过,不过觉得浪费资源。已经找到解决办法,结贴。 ---------------------------------------------------------------------------------------- 通过继承,重写鼠标单击事件。 ---------------------------------------------------------------------------------------- 记得添加using System.Windows.Forms引用 class MyDataGridView : DataGridView { protected override void OnCellMouseDown(DataGridViewCellMouseEventArgs e) { if (e.ColumnIndex < 3 || e.RowIndex < 0) return; this.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected = !this.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected; } protected override void OnCellMouseClick(DataGridViewCellMouseEventArgs e) { //base.OnCellMouseClick(e); } }
tanghuawei
2013-03-29
打赏
举报
回复
纠正一下,Dictionay<Point,bool>这样好些,Point为单元格行列索引,bool为是否选中
tanghuawei
2013-03-29
打赏
举报
回复
其实用代码实现也挺简单,给你个思路,设一个全局变量Dictionay<int,int>这个字典集合存你单击选中的单元格,分别为单元格的行列索引,第一次单击则在添加,第二次则删除,在单击事件里判断是否包含该单元格就行了,包含则selected = false,反之亦然
turboking
2013-03-29
打赏
举报
回复
这个是我个人用的办法,通过改变背景颜色,但是会和点击的时候会和自带的单击事件冲突,不是我想要的方法。 希望有高手能帮忙提示怎么重写单击事件。 private void dataGridViewData_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex < 3 || e.RowIndex < 0) return; if (dataGridViewData.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor != Color.Red) { // 单击改变行背景色和字体颜色 dataGridViewData.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.Red;; } else { dataGridViewData.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.White; }
tanghuawei
2013-03-29
打赏
举报
回复
参照这里写,可以将SelectedRows改为SelectedCells,你试试,我没测试过:
http://stackoverflow.com/questions/3915745/select-multiple-rows-without-pressing-control-key
turboking
2013-03-29
打赏
举报
回复
tanghuawei补充说明很对,就是要这 还需注意单击第一次选中,单击第二次取消选中
turboking
2013-03-29
打赏
举报
回复
感谢tanghuawei 可是该怎么编码呢,查了好久的资料,找不到比较清晰的方法。 好像有人说过用datagridvew生成派生类,用override 重写,不知道具体怎么实现。
turboking
2013-03-29
打赏
举报
回复
感谢 gxingmin 不过我是多选单元格,不是多选行。这样设置是整行的吧?
tanghuawei
2013-03-29
打赏
举报
回复
恩,建议在单击事件里做文章,还需注意单击第一次选中,单击第二次取消选中
gxingmin
2013-03-29
打赏
举报
回复
1的思路不好 在单击事件里写吧,单击时判断是否currentRow!=null,设置currentRow为选中状态
C#用
DataGridView
实现
多选
表格
用
DataGridView
实现
多选
表格,避免使用过多checkbox,导致界面看起来很混乱。 更多说明可查看代码。
具有
多选
功能的下拉列表框
实现了一个可以
多选
的下拉列表框,下拉列表是一个checkboxlist,通过用户控件实现
C#Winform报表与打印技术——自定义报表的实现
本课程详细讲解在C#Winform程序里,对
DataGridView
展示的数据进行自定义报表格式的设计、预览、打印如何实现
vb.net
DataGridView
控件用法合集
47.
DataGridView
单击
打开下拉框 48.
DataGridView
中显示按钮 49.
DataGridView
中显示链接 50.
DataGridView
中显示图像
DataGridView
控件用法合集(十) 51.
DataGridView
编辑中单元格控件取得 52.
DataGridView
...
DataGridView
表头添加checkbox实现全选反选
DataGridView
表头添加checkbox实现全选反选
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章