Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么CheckChanged处理程序中的复选框状态始终为true_C#_Asp.net_Webforms_Asp.net 4.5 - Fatal编程技术网

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

C# 为什么CheckChanged处理程序中的复选框状态始终为true,c#,asp.net,webforms,asp.net-4.5,C#,Asp.net,Webforms,Asp.net 4.5,我有一个复选框,我用以下方式声明了它 checkbox = new CheckBox(); checkbox.ID = "AreaGroup"; checkbox.AutoPostBack = true; checkbox.CheckedChanged += new System.EventHandler(this.EHArea_Clicked); 然后,我使用以下方法在代码隐藏中声明EHArea_Clicked函数 void EHArea_Clicked(Object sender, Eve

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

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。有人知道为什么会发生这种情况吗?

我相信您的问题在于您正在重用
复选框
变量。您需要一个新变量。试试这样的。您还可以将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;
    }
}

我认为您可能会遇到“checkbox”变量的范围问题。您正在重新分配:checkbox=(checkbox)aItem.FindControl(“TownCheckbox”);您不应该重新分配复选框。您在哪里动态创建该区域组复选框?@zam664我认为情况并非如此。与checkbox变量相关的所有功能都可以正常工作。如果我将if条件切换为!((复选框)sender)。选中此复选框将始终执行else子句properly@Win在中继器的OnItemDataBound中,并将其设置为中继器中的占位符。@KHeaney动态创建控件可能会导致问题,但我不能说没有看到其余代码。请同时上传aspx和代码。我刚刚尝试了声明一个新变量和直接将复选框重新设置为新的。这两种方法都没有解决“发件人”复选框始终计算为true的问题。