如何使用白色勾选或取消勾选数据网格视图中的复选框

时间:2016-01-27 10:16:50

标签: c# .net winforms datagridview white

我有一个WinForms应用程序,它显示一个DataGridView。它从BindingSource自动填充,并包含多行数据。列包括字符串等标准内容。其中一些列是CheckBoxes。

Name | User | Admin ---- ---- ----- John | X |
Fred | | X

我正在使用TestStack.White编写一些自动化测试。我可以毫无问题地阅读CheckBoxes的现有状态。

如何设置或清除复选框? 我试过了:

  1. Table.Rows[0].Cells[1].Value = true;
  2. 失败,因为在White可以回读当前值之前删除了基础行/单元格。

    还有:

    1. Table.Rows[0].Cells[1].SetValue(true);
    2. 无法设置新值。

5 个答案:

答案 0 :(得分:1)

由于您的DataGridView已绑定到BindingSource,因此您应更改BindingSource中的布尔值,而不是dataGridView控件。

答案 1 :(得分:1)

由于TestStack.White无法访问基础对象模型,因此您必须提供按钮或重置按钮。或者某些GUI方式(使用逻辑)通过将BindingSource's布尔字段设置为false来清除复选框值。

这是一些伪造的代码来说明。

private void New_Click(object sender, System.EventArgs e) 
{
   DataTable dt = (DataTable)dgv.DataSource;
   dt[1]["IsAdmin"].value = false;
   //In ASP.Net you also need a dgv.Bind(); //this is not necessary in winforms
}

您的系统中应该已经有一种方法可以使用清除的Checkbox进行测试,它应该与最终用户当前的操作方式一致。

答案 2 :(得分:0)

我这是设置价值观的有用方法吗? DataGridView checkbox column - value and functionality

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    row.Cells[CheckBoxColumn1.Name].Value = true;
}

或者对象的Table是什么?

答案 3 :(得分:0)

我相信c#中的复选框有一个属性' 已检查'。即使它在DataGridView中,我相信控件的属性保持不变。

那么,你可以试试吗

Table.Rows[0].Cells[1].Checked = true;

<强>资源http://www.c-sharpcorner.com/uploadfile/mahesh/checkbox-in-C-Sharp3/

答案 4 :(得分:0)

我也无法从单元格或行中都提取不属于datagridviewcheckboxcolumn的复选框,最终导致鼠标被黑客入侵,如下所示:

Rect bounds = table.Rows[rowNo].Cells[colNo].Bounds;
Point center = new Point(bounds.X + bounds.Width / 2, bounds.Y + bounds.Height / 2);
Mouse.Instance.Click(center);