现在的位置: 首页 > 综合 > 正文

DataGridView中添加CheckBox控件主要采用两种方法

2013年04月22日 ⁄ 综合 ⁄ 共 2454字 ⁄ 字号 评论关闭

DataGridView中添加CheckBox控件主要采用两种方法

1.  通过在DataGridView的Columns中添加System.Windows.Forms.DataGridViewCheckBoxColumn类型的列。并可以设置该列相关的属性信息。

2. 在程序代码中直接添加相应的代码

System.Windows.Forms.DataGridViewCheckBoxColumn Column1;
Column1 = new System.Windows.Forms.DataGridViewCheckBoxColumn();

Column1.HeaderText = "Column1";
Column1.Name = "Column1";
Column1.ReadOnly = false;

...

this.dgvRet.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {Column1});

也可以采用this.dgvRet.Columns.Add(Column1);进行更灵活的列添加。

在DataGridView绑定数据源后,可以通过设置DataGridViewCheckBoxColumn的DataPropertyName来确定影响CheckBox显示的数据源的属性和详细列名(具体如何影响可以由TrueValue、FalseValue和IndeterminateValue来设置)。也可以让数据源与添加的CheckBox无关联,在DataGridView中显示为不同的列。

DataGridView 中CheckBox的常用处理方法。

1.  如何设置CheckBox的值。     

    this.dgvRet.Rows[i].Cells[j].Value = false;

    直接设置在DataGridView第(i+1)行第(j+1)列中CheckBox的Value的值。若Value的值为true,CheckBox 被勾上,若Value的值为false,CheckBox 不勾上。

2. CheckBox是否勾上的事件处理方法。

    需要注意的是:在DataGridView中添加DataGridViewCheckBoxColumn,CheckBox是占有整个Cell方框的。在c#中默认情况下,CheckBox是否被单击和是否勾上没有必然的联系。可能你在点击Cell方框后,CheckBox的Value(是否勾上)不会发生变化(点在Cell中空白处)。

    这种情况,我一般将CheckBox的Value值通过程序进行控制。不依赖于Visual Studio 2005自动完成。具体处理步骤如下:

   1. 将DataGridViewCheckBoxColumn的ReadOnly属性设置为true。

   2. 添加DataGridView的CellClick方法。

        private void dgvRet_CellClick(object sender, DataGridViewCellEventArgs e)
        {
          

            if (this.dgvRet.CurrentCell.ColumnIndex == 0)
            {
                //获取DataGridView中CheckBox的Cell
                DataGridViewCheckBoxCell dgvCheck = (DataGridViewCheckBoxCell)(this.dgvRet.Rows[this.dgvRet.CurrentCell.RowIndex].Cells[0]);

                //获取被选中列的相关信息

                Double dAdd = double.Parse(this.dgvRet.Rows[this.dgvRet.CurrentCell.RowIndex].Cells[5].Value.ToString());

                ...

               //根据单击时,Cell的值进行处理。EditedFormattedValue和Value均可以

               //若单击时,CheckBox没有被勾上
                if (Convert.ToBoolean(dgvCheck.EditedFormattedValue) == false)
                {
                    this.dTotal += dAdd;

                    ...   

                    //通过程序完成CheckBox是否勾上的控制
                    dgvCheck.Value = true;
                }

               //若单击时,CheckBox已经被勾上
                else
                {
                    this.dTotal -= dAdd;

                    ...   

                    //通过程序完成CheckBox是否勾上的控制
                    dgvCheck.Value = false;
                }
              
                this.txtTotal.Text = this.dTotal.ToString();

            }
        }

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pinkey1987/archive/2010/01/29/5267934.aspx

抱歉!评论已关闭.