dataGridView 如有五条记录,从数据源中取出,即为选中状态,取消2、3、4条,如果光标还停留在第4条记录时,检查状态,还是为选中,将光标称开,再检查,即为取消,为何,谢谢

解决方案 »

  1.   

    我跟踪了一下CellValueChanged事件,发现只有光标离开这个单元格时,才会触发这个事件,我想要的是只要钩择了checkBox,它的值就要发生变化的
      

  2.   

    DataGridViewCheckBoxColumn勾选这个单元中的CheckBox时,触发什么事件呀CellValue和CheckBox的值是不是一致的呀
    谢谢!
      

  3.   

     CommitEdit  将当前单元格中的更改提交到数据缓存,但不结束编辑模式。  
      

  4.   

    再说DataGridViewCheckBoxColumn有自己的事件,为什么要检查cellValuechange呢?
      

  5.   

    当然是触发它的Click事件了。
      

  6.   

    OK,果然这是个CommitEdit 的事情
    好像dataGridView在结束编辑状态下,才执行提交的,光标没有离开时,处于编辑状态,所以没有提交!
    我现在将这个提交放在了MouseUp事件中,有没有其它事件可以处理呀,比较CheckBox的值发生变化时,或其它事件
    谢谢!
      

  7.   

                DataGridView dgv = new DataGridView();
                dgv.Name = areaName;
                dgv.RowHeadersWidth = 20;
                dgv.AllowUserToAddRows = false;
                dgv.AllowUserToDeleteRows = false;
                dgv.AllowUserToResizeColumns = false;
                dgv.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect;
                dgv.ScrollBars = ScrollBars.None;
                dgv.Dock = DockStyle.Top ;
                dgv.ContextMenuStrip = contextMenuStrip1;
                dgv.EditMode = DataGridViewEditMode.EditOnEnter;            //Event
                dgv.MouseDown += new MouseEventHandler(DGV_MouseClick);
                dgv.RowPostPaint += new DataGridViewRowPostPaintEventHandler(dgv_RowPostPaint);
                dgv.CurrentCellChanged += new EventHandler(dgv_CurrentCellChanged);
                dgv.CellValueChanged += new DataGridViewCellEventHandler(dgv_CellValueChanged);
                dgv.MouseClick += new MouseEventHandler(dgv_MouseClick);
                dgv.MouseUp += new MouseEventHandler(dgv_MouseUp);            this.Controls.Add(dgv);
                DataGridViewCheckBoxColumn dgvCheckBox = new DataGridViewCheckBoxColumn();
                dgvCheckBox.DataPropertyName = "SELECTED";
                dgvCheckBox.HeaderText = "选择";
                dgvCheckBox.Width = 40;
                dgvCheckBox.TrueValue = true;
                dgvCheckBox.FalseValue = false;
                dgvCheckBox.ThreeState = false;
                dgv.Columns.Add(dgvCheckBox);
    -----事件处理,想在右键菜单做业务处理---
            private void DGV_MouseClick(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Right)
                {                DataGridView view = new DataGridView();                view = (DataGridView)sender;
                    for (int i = 0; i < view.Rows.Count; i++)
                    {                    //if (Convert.ToBoolean(view.Rows[i].Cells[0].Value))
                        if (view.Rows[i].Cells[0].FormattedValue.ToString() == "True")
                        {
                            Console.WriteLine(view.Rows[i].Cells[3].Value.ToString());
                        }                }
                }