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

本文关键字:网格 数据网 视图 复选框 数据 取消 何使用 白色 | 更新日期: 2023-09-27 18:32:01

我有一个WinForms应用程序,它显示DataGridView。 它是从绑定源自动填充的,并包含几行数据。 这些列包括字符串等标准内容。 其中一些列是复选框。

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

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

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

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

失败,因为在 White 可以读回当前值之前删除了基础行/单元格。

还有:

  1. Table.Rows[0].Cells[1].SetValue(true);

无法设置新值。

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

由于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
}

您的系统中应该已经有一种方法可以在清除复选框的情况下进行测试,它应该与最终用户当前的做法一致。

我的 这是设置值的有用方法吗?数据网格视图复选框列 - 值和功能:

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

或者您对对象的Table是什么?

我相信

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

所以,你能试试这个吗

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

参考资料:http://www.c-sharpcorner.com/uploadfile/mahesh/checkbox-in-C-Sharp3/

因为您的DataGridView绑定到 BindingSource ,所以您应该在 BindingSource 中更改布尔值,而不是通过 dataGridView 控件。

我也无法从单元格或行中提取属于 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);