我有一个代码,其中的应用程序崩溃,因为,订阅事件应该被推迟,直到调用加载方法(虽然目前我正在使用复选框检查财产内的另一种方法由于业务规则如下:)如何推迟一个事件“Checkbox.Checked”,直到调用某个方法(加载)
private void NatureCheck(bool Rec)
{
chkRec.Checked = !(lblRecID.Visible = txtRecID.Visible = Rec);
if (!applyReadOnly)
recipientController.SaveOrNotInBook(chkRec.Checked, address);
}
下面的事件被触发和应用程序崩溃。
chkRec.CheckedChanged += new System.EventHandler(chkRec_CheckedChanged);
我想推迟触发上述事件,直到调用“Load method”为止。如何做到这一点,请帮助我。
我的加载方法:
private void Rec_Load(object sender, EventArgs e)
{
if (chkRec.Visible = allowTemp)
chkRec.Enabled = !(chkRec.Checked = RecDataTable[0].CA_FLAG);
string country = RecDataTable[0].IsNTY() ? string.Empty : RecDataTable[0].NTY;
showTax(country);
dGSignatureLoaded = !(lblDGSignText.Visible = RecDataTable[0].IsDG_SIGNNull());
}
事件处理程序:
private void chkRec_CheckedChanged(object sender, EventArgs e)
{
Controller.TryHandleException(delegate
{
lblRec.Visible = txtRecID.Visible = !chkRec.Checked;
if (recipientController.SaveOrNotInBook(chkRec.Checked, RecipientDataTable[0]))
recDataTableBindingSource.EndEdit();
});
}
我认为如果你发布你的加载方法和你的事件处理程序是非常有帮助的,所以我们可以计算出这些方法发生了什么。 – Baldrick
@Baldrick:谢谢,我粘贴了上面的代码。看起来它在事件处理程序中给出异常,并且异常读取“对象引用未设置为对象实例” – Learner
@Baldrick:对不起,在调试时,我发现异常发生在方法“NatureCheck()”呼叫者。 – Learner