0

我正在尝试从复选框的 CheckedChanged 事件处理程序中禁用标签控件。我应该能够做到这一点吗?

目前,如果我将 Enabled 设置为 false,则页面重新加载时不会发生任何变化。如果我在 Page_Load 中做同样的事情,那么我会看到变化。

澄清:

这不起作用:

protected void chkNeverExpires_CheckedChanged(object sender, EventArgs e)
{
    this.lblMessage.Enabled = false
}

但这确实:

protected void Page_Load(object sender, System.EventArgs e)
{
    this.lblMessage.Enabled = false
}
4

1 回答 1

2

你确定你的事件是按照你期望的顺序触发的吗?在所有回发方法上设置断点并观察会发生什么,您是否在任何地方重置启用状态?你有什么 enableviewstate=false 吗?

编辑:您意识到 CheckedChanged 在您从另一个控件回发之前不会触发,或者您在 checbkbox 上有 AutoPostBack=true?

这工作正常:

<asp:Label runat="server" ID="lblTest">test</asp:Label>
<asp:CheckBox runat="server" ID="chkCheck" AutoPostBack="true" />Check

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    chkCheck.CheckedChanged += chkCheck_CheckedChanged;
}

private void chkCheck_CheckedChanged(object sender, EventArgs e)
{
    lblTest.Enabled = false;
}
于 2008-11-07T11:09:19.043 回答