为什么CheckChanged处理程序中的复选框状态始终为true

本文关键字:状态 true 复选框 CheckChanged 处理 程序 为什么 | 更新日期: 2023-09-27 18:28:16

我有一个复选框,我以以下方式声明了

checkbox = new CheckBox();
checkbox.ID = "AreaGroup";
checkbox.AutoPostBack = true;
checkbox.CheckedChanged += new System.EventHandler(this.EHArea_Clicked);

然后,我用以下方法在后面的代码中声明EHArea_Clicked函数

void EHArea_Clicked(Object sender, EventArgs e)
{
    foreach (RepeaterItem aItem in Repeater1.Items)
    {
        checkbox = (CheckBox)aItem.FindControl("TownCheckbox");
        if (((CheckBox)sender).Checked)
        {
            checkbox.Checked = true;
        }
        else
        {
            checkbox.Checked = false;
        }
    }
}

我的问题是

((CheckBox)sender).Checked

无论我是选中还是取消选中复选框,始终计算为true。有人知道为什么会发生这种事吗?

为什么CheckChanged处理程序中的复选框状态始终为true

我相信您的问题是您正在重用checkbox变量。你需要一个新的变量。试试这样的东西。也可以将if-else减少为一行。

void EHArea_Clicked(Object sender, EventArgs e)
{
    foreach (RepeaterItem aItem in Repeater1.Items)
    {
        CheckBox currentCheckBox = (CheckBox)aItem.FindControl("TownCheckbox");
        currentCheckBox.Checked = ((CheckBox)sender).Checked;
    }
}