DataGridView控件中CheckBox列的使用

      做Windows Form程序开发的人对.NET中的DataGridView控件一定都不陌生,平时用的最多的就是数据表格的显示,一般ColumnType都是DataGridViewTextBoxColumn类型的,在此根据一个实例交流一下DataGridView中DataGridViewCheckBoxColumn类型的列的基本使用。

      前段时间编写一个基于WebService的短信收发程序,其中有一个短信群发功能,如图1所示,既可以手工键入数字添加电话号码,也可以从数据库的联系人记录中选取收件人电话号码。

2010062720003731.jpg

图1: 短信发送界面

手动键入数字添加号码的方式在此不作讨论,单击“电话薄”按钮,弹出图2所示界面。

2010062722300555.jpg

图2:从数据库联系人记录中选择短信接收人界面

      对于.NET中寻常的CheckBox控件来说,无需任何代码,在程序运行时点击CheckBox控件即可切换其选中状态。但是在DataGridView控件中的DataGridViewTextBoxColumn类型的列,要实现如此功能,却要借助一定的代码来实现。在程序中,添加DataGridView控件的CellContentClick事件,代码如下:

 

ContractedBlock.gif ExpandedBlockStart.gif 代码 DataGridView控件的CellContentClick事件
 
    
private void dgvAllUser_CellContentClick( object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0 && e.RowIndex != - 1 )
{
if (( bool )dgvAllUser.Rows[e.RowIndex].Cells[ 0 ].EditedFormattedValue == true )
{
dgvAllUser.Rows[e.RowIndex].Cells[
0 ].Value = false ;
}
else
{
dgvAllUser.Rows[e.RowIndex].Cells[
0 ].Value = true ;
}
}
}

      注意判断条件if ((bool)dgvAllUser.Rows[e.RowIndex].Cells[0].EditFormattedValue == true),获取CheckBox的值需用EditFormattedValue或者FormattedValue,而不能使用Value。然后再“添加”按钮的Click事件中用一个循环将处于选中状态的CheckBox所对应的列的联系人的电话号码(dgvAllUser.Rows[i].Cells[4].Value.ToString())添加到短信发送界面的收件人号码列表中。

 

转载于:https://www.cnblogs.com/hans_gis/archive/2010/06/27/1766284.html