DataGridView选中如何选中多行的问题

FirstMrWu 2011-08-13 05:36:33
加了一列checkBox,然后点checkbox,选中这行。同时这行背景色就变了,windows默认的,大家懂的。
然后再点下一个checkbox时,该选被选中,背景色变,但上次选中的那行背景色就又变成原来的了,而不是选中后的背景色。
我想要的效果是每点一行的checkbox,该行背景色都变。就好比ctrl实现多选的效果一样,只不过只一行一行去点checkbox的。
想要的效果如图示:
...全文
1116 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzybc 2011-08-14
  • 打赏
  • 举报
回复
不用checkbox列也可以实现的

点击一行,用变量记录行号(该行号如果已经在变量中,则取消,)
FirstMrWu 2011-08-14
  • 打赏
  • 举报
回复
哈哈,这个问题我搞定了,就用颜色。如下:

private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
if (e.RowIndex >= 0)
{
if ((bool)dataGridView.Rows[e.RowIndex].Cells[0].EditedFormattedValue == true)
{
dataGridView.Rows[e.RowIndex].Cells[0].Value = false;
dataGridView.Rows[e.RowIndex].Selected = false;
Color c = SystemColors.Window;
dataGridView.Rows[e.RowIndex].DefaultCellStyle.BackColor = c;
}
else
{
dataGridView.Rows[e.RowIndex].Cells[0].Value = true;
dataGridView.Rows[e.RowIndex].Cells[0].Selected = false;
Color c = Color.FromArgb(100, 200, 200, 200);
dataGridView.Rows[e.RowIndex].DefaultCellStyle.BackColor = c;
}
}
}
}

美中不足是这行代码,太死板了。Color c = Color.FromArgb(100, 200, 200, 200);
我试图用和行代码: Color c = SystemColors.Window;这种方法去找到这种颜色,但没找到。
FirstMrWu 2011-08-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zlblog 的回复:]

用jquery来做。当点击checkbox时,用jquery改变该行的背景色。不过DataGridView我不太会用,

需要的话,我可以给你发个例子,不过没DataGridView

有问题请到我的博客留言,我会及时回复的。
[/Quote]

用改变背景色的方法在dataGridView中我也可以实现的,只是不想这样子做。
我是点击单元格的响应消息中这样子实现的,

private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{

if ((bool)dataGridView.Rows[e.RowIndex].Cells[0].EditedFormattedValue == true)
{
dataGridView.Rows[e.RowIndex].Cells[0].Value = false;
dataGridView.Rows[e.RowIndex].Cells[0].Selected = false;
dataGridView.Rows[e.RowIndex].Selected = false;
//dataGridView.Rows[e.RowIndex].DefaultCellStyle.BackColor = GridColor;

}
else
{
dataGridView.Rows[e.RowIndex].Cells[0].Value = true;
dataGridView.Rows[e.RowIndex].Selected = true;
//dataGridView.Rows[e.RowIndex].DefaultCellStyle.BackColor = Control.DefaultBackColor;
}
}
}


dataGridView.Rows[e.RowIndex].Selected = true;这句就可以使行为选中状态,可是点击下一行的时候上一次选的那行就又变回去了。
LS:不想用ctrl
古今多少事 2011-08-13
  • 打赏
  • 举报
回复
按住Ctrl在点。
zlblog 2011-08-13
  • 打赏
  • 举报
回复
用jquery来做。当点击checkbox时,用jquery改变该行的背景色。不过DataGridView我不太会用,

需要的话,我可以给你发个例子,不过没DataGridView

有问题请到我的博客留言,我会及时回复的。
FirstMrWu 2011-08-13
  • 打赏
  • 举报
回复
才发现,CSDN上不了本地图片。不好意思。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧