t = this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString() == "True" ? true : false;
                        t = !t;
                        this.dataGridView1.Rows[e.RowIndex].Cells[0].Value = t;
                        if (t == true)
                        {
                            Frm_BSCSet frm_bsc = new Frm_BSCSet(dataGridView1[2, e.RowIndex].Value.ToString());
                            frm_bsc.Show();
                            frm_bsc = null;
                            C_Public.errordata = -1;
                            if (C_Public.errordata == -1)
                            {
                                this.dataGridView1.Rows[e.RowIndex].Cells[0].Value =false;
                            }
                            
                        }Winform中如像我这对DataGridViewCheckBoxColumn进行赋值,值改变了但界面上的DataGridViewCheckBoxColumn此列还是选中的.
如果把this.dataGridView1.Rows[e.RowIndex].Cells[0].Value =false;放到其它按件事件就没有问题.
这会不会的底层有关啊,我打开了一个新窗体,然后关闭了窗体.这样改变DataGridViewCheckBoxColumn列的值后界面上就不会发生改变,请问一下如何解决这个问题啊.我的想法是,DataGridViewCheckBoxColumn为真时打开一个窗体进行设置.如果发现里面没有值时退出打开的窗体并将DataGridViewCheckBoxColumn设置假.同时界面上也不选中此记录了.但现在遇到的打开窗体关闭后,改变了DataGridViewCheckBoxColumn的值,但界面上没有改变.

解决方案 »

  1.   

    下面的代码示例演示如何使用 DataGridViewCheckBoxColumn 来标记请假的员工。此示例摘自 DataGridViewComboBoxColumn 类概述主题中提供的一个更大的示例。private void AddOutOfOfficeColumn()
    {
        DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn();
        {
            column.HeaderText = ColumnName.OutOfOffice.ToString();
            column.Name = ColumnName.OutOfOffice.ToString();
            column.AutoSizeMode = 
                DataGridViewAutoSizeColumnMode.DisplayedCells;
            column.FlatStyle = FlatStyle.Standard;
            column.ThreeState = true;
            column.CellTemplate = new DataGridViewCheckBoxCell();
            column.CellTemplate.Style.BackColor = Color.Beige;
        }    DataGridView1.Columns.Insert(0, column);
    }