0

我编写了一个代码,其中当单击一个复选框时,其他复选框被取消选中 按钮图像
我的 3 个复选框按名称、包含和按日期工作正常但是当我尝试对按类别复选框执行相同操作时,我得到以下消息。错误图片 这是我的代码

 private void vieworder_Load(object sender, EventArgs e)
{
    try
    {
        con.Open();
        if (con.State == ConnectionState.Open)
        {
            lblstatus.Text = "Connected";
            lblstatus.ForeColor = Color.Green;
        }
        else
        {
            lblstatus.Text = "Not-Connected";
            lblstatus.ForeColor = Color.Red;
        }
        showdtgrid();



    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

}

private void hidecheckbox()
{
    chkboxbyname.CheckState = CheckState.Unchecked;
    chkboxbydate.CheckState = CheckState.Unchecked;
    chkboxcontaining.CheckState = CheckState.Unchecked;
    checkBox1.CheckState = CheckState.Unchecked;

}





private void chkboxbyname_CheckedChanged(object sender, EventArgs e)
{
        hidecheckbox();

        chkboxbyname.CheckState = CheckState.Checked;

}

private void chkboxcontaining_CheckedChanged(object sender, EventArgs e)
{

        hidecheckbox();

    chkboxcontaining.CheckState = CheckState.Checked;

}

private void chkboxbydate_CheckedChanged(object sender, EventArgs e)
{

        hidecheckbox();

    chkboxbydate.CheckState = CheckState.Checked;


}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    hidecheckbox();
    checkBox1.CheckState = CheckState.Checked;
}


   }

}

请告诉我怎么了

4

1 回答 1

0

乍一看,堆栈溢出似乎与checkBox1_CheckedChanged的​​事件处理程序直接相关。

看起来该处理程序正在调用hideCheckbox(),这反过来将您的复选框的CheckState更改为Unchecked。这反过来会触发您的事件处理程序,从而创建一个无限循环。

奇怪的是,您声称一切都适用于其他复选框。我的猜测是这些复选框没有连接到它们相应的事件处理程序,因为它们也应该导致堆栈溢出。

如果不需要,您可以尝试完全删除您的事件处理程序吗?否则,注释掉对hideCheckbox()的调用

于 2020-04-21T17:10:25.990 回答