C# 复选框CheckedChanged从代码隐藏添加的事件

C# 复选框CheckedChanged从代码隐藏添加的事件,c#,asp.net,events,checkbox,C#,Asp.net,Events,Checkbox,我在代码后面添加了几个复选框,但无法启动CheckedChanged事件 在页面加载时调用此代码: CheckBox cb = new CheckBox(); cb.AutoPostBack = true; cb.CheckedChanged += cb_CheckedChanged; cb.ToolTip = dr["Id"].ToString(); cb.ID = Guid.NewGuid().ToString(); Label lbl = new Label(); lbl.Text =

我在代码后面添加了几个复选框,但无法启动CheckedChanged事件

在页面加载时调用此代码:

CheckBox cb = new CheckBox();
cb.AutoPostBack = true;
cb.CheckedChanged += cb_CheckedChanged;

cb.ToolTip = dr["Id"].ToString();
cb.ID = Guid.NewGuid().ToString();

Label lbl = new Label();
lbl.Text = dr["Id"].ToString();
lbl.AssociatedControlID = cb.ID;

dvCheckboxes.Controls.Add(cb);
dvCheckboxes.Controls.Add(lbl);
dvCheckboxes.Controls.Add(new LiteralControl("<br />"));
我在CheckedChanged事件中设置了一个断点,但从未到达该断点

我所尝试的:

  • 如果(!IsPostBack),则将代码放入
    ,但没有区别
  • cb.CheckedChanged+=新事件处理程序(cb_CheckedChanged)
  • cb.CheckedChanged+=新事件处理程序(this.cb\u CheckedChanged)
  • cb.ViewStateMode=System.Web.UI.ViewStateMode.Enabled
  • 尝试将代码放入
    Page\u Init
    而不是
    Page\u Load

在站点代码中添加事件-非代码隐藏:

<asp:CheckBox ID="cb" Runat="server" CheckedChanged="cb_CheckedChanged" />


希望这有帮助。

@johan,试试这个。在PageInit而不是Pageload中创建复选框。还要为复选框提供适当的id

        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void Page_init(object sender, EventArgs e)
        {
            CheckBox cb = new CheckBox();
            cb.AutoPostBack = true;
            cb.CheckedChanged +=cb_CheckedChanged;
            cb.CausesValidation = false;
            cb.ToolTip = "Hello";
            cb.ID = "chk_test";

            Label lbl = new Label();
            lbl.Text = "test";
            lbl.AssociatedControlID = cb.ID;

            dvCheckboxes.Controls.Add(cb);
            dvCheckboxes.Controls.Add(lbl);
            dvCheckboxes.Controls.Add(new LiteralControl("<br />"));
        }
        protected void cb_CheckedChanged(object sender, EventArgs e)
        {

            System.Diagnostics.Debug.Write(((CheckBox)sender).ToolTip);
        }
受保护的无效页面加载(对象发送方,事件参数e)
{
}
受保护的无效页_init(对象发送方,事件参数e)
{
复选框cb=新复选框();
cb.AutoPostBack=true;
cb.CheckedChanged+=cb_CheckedChanged;
cb.CausesValidation=false;
cb.ToolTip=“你好”;
cb.ID=“chk_测试”;
标签lbl=新标签();
lbl.Text=“测试”;
lbl.AssociatedControlID=cb.ID;
DV复选框。控件。添加(cb);
DV复选框。控件。添加(lbl);
dvcheckbox.Controls.Add(新的LiteralControl(“
”); } 受保护的无效cb_CheckedChanged(对象发送方,事件参数e) { System.Diagnostics.Debug.Write(((复选框)sender.ToolTip); }
我不能,因为复选框是从代码隐藏添加的。我的asp只是
谢谢!不需要将它放在页面_init中,只需要一个合适的id=)
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void Page_init(object sender, EventArgs e)
        {
            CheckBox cb = new CheckBox();
            cb.AutoPostBack = true;
            cb.CheckedChanged +=cb_CheckedChanged;
            cb.CausesValidation = false;
            cb.ToolTip = "Hello";
            cb.ID = "chk_test";

            Label lbl = new Label();
            lbl.Text = "test";
            lbl.AssociatedControlID = cb.ID;

            dvCheckboxes.Controls.Add(cb);
            dvCheckboxes.Controls.Add(lbl);
            dvCheckboxes.Controls.Add(new LiteralControl("<br />"));
        }
        protected void cb_CheckedChanged(object sender, EventArgs e)
        {

            System.Diagnostics.Debug.Write(((CheckBox)sender).ToolTip);
        }