如何检查,复选框是否在C#winform中检查

时间:2014-08-27 23:01:59

标签: c# winforms checkbox

 DataGridViewCheckBoxColumn GvCheckBox = new DataGridViewCheckBoxColumn();
        doWork.HeaderText = "Approved Cheque";
        doWork.FalseValue = "0";
        doWork.TrueValue = "1";
GvViewPendingCheque.Columns.Insert(0, doWork);
        GvViewPendingCheque.DataSource = objDataSet.Tables[0];

其工作正常复选框列已添加到带有数据库数据的网格中, 我想更新复选框检查的所有行的数据

MyTable列:PaymentStatus MyTable数据:待定

当管理员检查时,复选框PaymentStatus将更新为Approved而不是Pending 请帮我, 我试过这段代码,但它不起作用:

  foreach (DataGridViewRow row in GvViewPendingCheque.Rows)
                    {

                        if ((bool)row.Cells[doWork.Name].Value == true)
                        {
                            MessageBox.Show("True");
                        }
                        else
                        {
                            MessageBox.Show("Failed...");
                        }
                    }

if ((bool)this.GvViewPendingCheque.Rows[0].Cells[0].Value == true)
            {
                MessageBox.Show("True");
            }
            else
            {
                MessageBox.Show("False");
            }

只是想知道如何获取复选框'检查'行

3 个答案:

答案 0 :(得分:1)

您将错误和真实值设置为" 0"和" 1"分别。但是将字符串转换为布尔值就像你在foreach循环中尝试做的那样,会抛出一个FormatException

另一方面,将数字0和1转换为布尔值将返回falsetrue

DataGridViewCheckBoxColumn GvCheckBox = new DataGridViewCheckBoxColumn();

GvCheckBox.FalseValue = 0;  // replaced "0"
GvCheckBox.TrueValue = 1;   // replaced "1"

答案 1 :(得分:0)

你可以使用:

 if (Convert.ToBoolean(this.GvViewPendingCheque.Rows[0].Cells[0].Value) == true)
        ...

但我确定这是否是访问数据网格视图中单元格的正确方法。 更简单的方法来访问单元格[行,列]:

if (Convert.ToBoolean(this.GvViewPendingCheque[0,0].Value) == true)

答案 2 :(得分:0)

如果将单元格转换为DataGridViewCheckBoxCell,那么您应该能够使用checked属性来查看是否已选中

cell1.checked == true