繁体   English   中英

如何使用 White 在 datagridview 中勾选或取消勾选复选框

[英]How can I tick or untick a checkbox in a datagridview using White

我有一个 WinForms 应用程序,它显示一个 DataGridView。 它由 BindingSource 自动填充,并包含多行数据。 列包括标准的东西,比如字符串。 其中一些列是复选框。

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

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

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

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

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

并且:

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

无法设置新值。

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

由于TestStack.White无法访问底层对象模型,因此您将不得不使用“新建”按钮或“重置”按钮。 或者通过将BindingSource's布尔字段设置为 false 来清除复选框值的某种 GUI 方式(带有逻辑)。

这里有一些伪代码来说明。

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
}

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

我的这是设置值的有用方法吗? DataGridView 复选框列 - 值和功能

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

或者你的对象Table是什么?

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

所以,你可以试试这个吗?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM