2 回答
TA贡献1829条经验 获得超9个赞
您需要找到控件并将其强制转换为复选框对象,然后查看它是否处于选中状态。该属性是复选框存储真/假值的位置,用于检查这些值。现在,您只是在检查单元格中的数据,以查看它是否有任何值,并且每次都返回true。我在下面这样做的方式是如何使用 ASP.NET Webforms GridView对象来执行此操作。我认为这与Windows Forms的想法大致相同,只是DataGridView可能有不同的方法来“查找你的控件”,而不是你在GridView的 ASP.NET Webforms中使用的方法。但我敢打赌,情况可能也是一样的。CheckedFindControl
我四处走动,无法使用Windows Forms测试此确切功能,但是,但是,为了使逻辑正常工作而需要做的事情背后的想法是完全相同的。
将您的状况更改为如下所示:
foreach (DataGridViewRow row in computerSelection.compGridView.Rows)
{
// Don't cast as bool. Convert to Checkbox object and see if it is checked.
if (((CheckBox)row.FindControl("CheckBox")).Checked) // row.FindControl might be different but might be the same for Winforms.
{
computerSelection.ComputersList.Add(row.Cells[1].Value.ToString());
}
}
TA贡献1820条经验 获得超10个赞
我找到了做到这一点的方法!使用 CellContentClick Event,然后使用 EditedFormatedValue 属性,这次布尔值为 REAL。
private void compGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
if ((bool)compGridView.Rows[e.RowIndex].Cells[0].EditedFormattedValue)
{
ComputersList.Add(compGridView.Rows[e.RowIndex].Cells[1].Value.ToString());
}
else
{
ComputersList.Remove(compGridView.Rows[e.RowIndex].Cells[1].Value.ToString());
}
}
}
谢谢
编辑:弄清楚为什么我一开始就有这个问题,这甚至有点滑稽。我有一个事件,当关闭表单时,每个复选框的值都会变为TRUE!
private void ComputerSelection_FormClosed(object sender, FormClosedEventArgs e)
{
for(int i = 0; i < compGridView.Rows.Count; i++)
{
compGridView.Rows[i].Cells[0].Value = true;
}
}
- 2 回答
- 0 关注
- 101 浏览
添加回答
举报