无法取消选中带有回发的复选框

Unable to uncheck checkbox with postback

我有几个用于隐藏和取消隐藏 asp.net 面板的复选框,我使用 C# 完成了此操作,这就是我需要回发的原因。

现在最初面板是隐藏的,我的代码在选中时工作正常,但是当我尝试取消选中它们时,它们在回发后保留了它们的值并且面板仍然可见。

这是我的代码:

标记:

<asp:CheckBox ID="cbxHideShow" runat="server" AutoPostBack="true" OnCheckedChanged="cbxHideShow_CheckedChanged" Text="Hide/Show Panel"/>

和代码隐藏:

protected void cbxHideShow_CheckedChanged(object sender, EventArgs e)
{
    if (cbxHideShow.Checked = true)
    {
        Panel1.Visible = true;
    }
    else
    {
        Panel1.Visible = false;
    }
}

如果有人能告诉我我做错了什么,我将不胜感激。

您在应该使用相等运算符 (==) 的地方使用了赋值运算符 (=)。

if (cbxHideShow.Checked == true)

更好的是,完全省略运算符,因为 cbxHideShow.Checked 已经是一个布尔值:

if (cbxHideShow.Checked)

当然,您甚至根本不需要 if 语句。你可以这样做:

protected void cbxHideShow_CheckedChanged(object sender, EventArgs e)
{
    Panel1.Visible = cbxHideShow.Checked;
}