我的DataGridView里,第一列是checkbox。我想当DataGridView有多行被选中的时候,修改选中行中的任何一个checkbox,都把这些选中的checkbox的值统一设定。(DataGridVew里的行选择是FullRowSelect) 
可是我发现很多事件中,selectedRows.Count都回到了1。。 
我本来打算用的是CellContentClick事件可是多选状态下,我一按第一行的checkbox,事件里面SelectedRows.Count就变成了1原来的SelectdRows.Count有什么办法能取回来吗? 
或者有什么好的办法解决?本来已经发在控件区,看这里人气旺,再发一个。希望各位帮忙。

解决方案 »

  1.   

    SelectedRows与CheckBox列没什么关系。
      

  2.   

    你点击CheckBox,会改变已经选中的行,从而改变SelectedRows的值。
      

  3.   

    是啊,我也是这么认为的。
    所以我想问问这种需求下,该在什么事件中能获取SelectedRows的值?
    或者有什么好的解决方法
      

  4.   

    嗯,那么有什么方法取到吗?
    在复数行被选中的情况下,我点了其中某行的一个checkbox的单元格的时候
      

  5.   

    这个值在什么时候都可以取到。
    借助于DataGridView事件,因为事件发生的时候这个值已经变化,所以无法判断什么时机合适。
    最简单的解决方法是点击外部的Button之类,在它们的Click事件中取这个值。
      

  6.   

    这样是常规做法,推荐选用,实在要在点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());
                //上次的值在这里了
            }
    }
      

  7.   

    问题就不知道怎么解决了..............看的稀里糊涂.至于你提的问题吗?  任何事件里都能取的到吧!
    DataGridViewSelectedRowCollection rowColl = ((DataGridView)sender).SelectedRows;