Вы уверены, что ваши события запускаются в том порядке, в котором вы ожидаете? Установите точки останова на все ваши методы обратной передачи и посмотрите, что произойдет. Сбрасываете ли вы включенное состояние где-нибудь? у вас есть enableviewstate = false на что-нибудь?
Редактировать: вы понимаете, что CheckedChanged не запускается, пока вы не выполните обратную передачу от другого элемента управления, или у вас есть AutoPostBack = true на checbkbox?
Это прекрасно работает:
<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;
}