我正在尝试从复选框的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
}
答案 0 :(得分: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;
}