如何取消勾选复选框的值

时间:2019-02-07 07:14:23

标签: c# winforms

我正在使用 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;
                    }
                }
            }
        }

2 个答案:

答案 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;
            }


        }