我正在使用 WinForms数据网格。有一个复选框栏。当用户检查一次并尝试不再次检查时,将出现一个消息框,询问
已经存在! \ n您要更改吗?
。当用户单击是时,上一个复选框将取消选中,然后将选中新的复选框。但是,如果用户单击否,则会同时选中两者。当用户单击否时,我想 取消选中新的 。
private void dgTeam1_CellClick(object sender, DataGridViewCellEventArgs e)
{
int pIndex = _list1.playerList.FindIndex(p => p.captain == true);
if (e.ColumnIndex == 6)
{
if (pIndex != -1)
{
DialogResult result = MessageBox.Show("Captain already exists! \nDo you want change?", "Change Captain Confirmation", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
dgTeam1[6, pIndex].Value = false;
else
{
dgTeam1[6, e.RowIndex].Value = false;
}
}
}
}
答案 0 :(得分:0)
我不知道您剩下的代码是什么,因此在您的MessageBox正常工作之前,我会考虑使用该代码。 您相距不远,您必须使用字符串而不是布尔值:
private void dgTeam1_CellClick(object sender, DataGridViewCellEventArgs e)
{
int pIndex = _list1.playerList.FindIndex(p => p.captain == true);
if (e.ColumnIndex == 6)
{
if (pIndex != -1)
{
DialogResult result = MessageBox.Show("Captain already exists! \nDo you want change?", "Change Captain Confirmation", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
dgTeam1[6, pIndex].Value = "false";
}
else
{
dgTeam1[6, e.RowIndex].Value = "false";
}
}
}
}
正如我之前说过的,我真的不知道您的代码在本部分其他地方的工作方式,因此您可能需要对其进行一些调整以满足您的需求。
答案 1 :(得分:0)
您可能想要尝试类似的操作,首先在变量中声明复选框单元格,然后将值设置为null
foreach (DataGridViewRow row in UrDGV.Rows)
{
DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells["ChkBoxCol"];
if (ischecked == true)
{
chk.Value = null;
}
}