C# 未激发CheckedChanged事件

C# 未激发CheckedChanged事件,c#,asp.net,webforms,C#,Asp.net,Webforms,在我的WebForm中,当用户检查一个产品时,我希望更改总价,但我的代码有这个问题 当我选中复选框时,CheckedChanged事件未触发 它只有在我点击按钮时才会触发(用作清除按钮),而我没有将该代码包含在按钮事件中 这是我的密码: public partial class _Default : System.Web.UI.Page { int total = 0; String strtotal; protected void ckb1_CheckedChange

在我的
WebForm
中,当用户检查一个产品时,我希望更改总价,但我的代码有这个问题

当我选中
复选框时,
CheckedChanged
事件未触发

它只有在我点击
按钮时才会触发(用作清除按钮),而我没有将该代码包含在按钮事件中

这是我的密码:

public partial class _Default : System.Web.UI.Page
{
    int total = 0;
    String strtotal;

    protected void ckb1_CheckedChanged(object sender, EventArgs e)
    {            
        if (ckb1.Checked)
        {                
            total = total + 100;
            strtotal = total.ToString();
            lbl2.Text = strtotal;
        } 

    }

    protected void ckb2_CheckedChanged(object sender, EventArgs e)
    {
        if (ckb2.Checked)
        {
            total = total + 80;
            strtotal = total.ToString();
            lbl2.Text = strtotal;
        }
    }

    protected void ckb3_CheckedChanged(object sender, EventArgs e)
    {
        if (ckb3.Checked)
        {
            total = total + 70;
            strtotal = total.ToString();
            lbl2.Text = strtotal;
        }
    }

    protected void Button3_Click(object sender, EventArgs e)
    {
        TextBox1.Text = " ";
        ckb1.Checked = false;
        ckb2.Checked = false;
        ckb3.Checked = false;    
    }

}

除了
按钮
超链接
链接按钮
之外,所有ASP.NET服务器控件都具有默认的
自动回发
属性
false
,因此您应该在
复选框中设置:

<asp:CheckBox ID="ckb1" runat="server" AutoPostBack="true" OnCheckedChanged="ckb1_CheckedChanged" />

只有当我点击按钮时它才会开火

正如我所说的,这是因为默认情况下,
按钮
具有
true
AutoPostBack
属性,因此在选中
复选框
并单击按钮后,
复选框
状态会自动发回服务器