DataGridView中的selectedRows哪些事件能取到?

Jackforid2003 2009-09-03 09:10:49
我的DataGridView里,第一列是checkbox。我想当DataGridView有多行被选中的时候,修改选中行中的任何一个checkbox,都把这些选中的checkbox的值统一设定。(DataGridVew里的行选择是FullRowSelect)
可是我发现很多事件中,selectedRows.Count都回到了1。。
我本来打算用的是CellContentClick事件。。。可是多选状态下,我一按第一行的checkbox,事件里面SelectedRows.Count就变成了1。。。原来的SelectdRows.Count有什么办法能取回来吗?
或者有什么好的办法解决?

本来已经发在控件区,看这里人气旺,再发一个。希望各位帮忙。
...全文
372 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dancingbit 2009-09-03
  • 打赏
  • 举报
回复
这个值在什么时候都可以取到。
借助于DataGridView事件,因为事件发生的时候这个值已经变化,所以无法判断什么时机合适。
最简单的解决方法是点击外部的Button之类,在它们的Click事件中取这个值。
Jackforid2003 2009-09-03
  • 打赏
  • 举报
回复
嗯,那么有什么方法取到吗?
在复数行被选中的情况下,我点了其中某行的一个checkbox的单元格的时候
dancingbit 2009-09-03
  • 打赏
  • 举报
回复
你现在不是取不到,而是取不到你所认为的。
Jackforid2003 2009-09-03
  • 打赏
  • 举报
回复
是啊,我也是这么认为的。
所以我想问问这种需求下,该在什么事件中能获取SelectedRows的值?
或者有什么好的解决方法
dancingbit 2009-09-03
  • 打赏
  • 举报
回复
你点击CheckBox,会改变已经选中的行,从而改变SelectedRows的值。
dancingbit 2009-09-03
  • 打赏
  • 举报
回复
SelectedRows与CheckBox列没什么关系。
Jackforid2003 2009-09-03
  • 打赏
  • 举报
回复
顶一下
wxm3630478 2009-09-03
  • 打赏
  • 举报
回复
问题就不知道怎么解决了..............看的稀里糊涂.

至于你提的问题吗? 任何事件里都能取的到吧!


DataGridViewSelectedRowCollection rowColl = ((DataGridView)sender).SelectedRows;
ncjcz 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dancingbit 的回复:]
这个值在什么时候都可以取到。
借助于DataGridView事件,因为事件发生的时候这个值已经变化,所以无法判断什么时机合适。
最简单的解决方法是点击外部的Button之类,在它们的Click事件中取这个值。
[/Quote]
这样是常规做法,推荐选用,实在要在点CELL的时候用的话,只能那个傻点,每次把SelectdRows保存起来。
给个思路,看看吧
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication2
{
public class MyGridView:DataGridView
{
public ArrayList LastSelectedRows = new ArrayList();
protected override void OnSelectionChanged(EventArgs e)
{
if (LastSelectedRows.Count >= 2)
LastSelectedRows.RemoveAt(0);
ArrayList NowSelectedRows = new ArrayList();

for (int i = 0; i < this.SelectedRows.Count; i++)
{
NowSelectedRows.Add(this.SelectedRows[i].Index);
}
LastSelectedRows.Add(NowSelectedRows);
base.OnSelectionChanged(e);
}
}
//private MyGridView dataGridView1
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
MessageBox.Show((this.dataGridView1.LastSelectedRows[0] as ArrayList).Count.ToString());
//上次的值在这里了
}
}

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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