我有两个UserControl,如下所示:
GeneralAccount UserControl已添加到cashdeposit UserControl中,并在表单加载时设置为不可见。通过按DataGridview特色文本列KeyUp事件中的 Ctrl + C 可以看到GeneralAccount。
我对这两个控件之间的句柄 ProcessCmdKey EventHandller 感到困惑。 我的任务是按下Escape键,可见控件应该是不可见的。如果CashDeposit上显示的Generalaccount比Generalaccount仅在按Escape Key而不是CashDeposit时也是不可见的。如果GeneralAccount不可见并且用户按Escape键而不是CashDeposit Usercontrols应该是不可见的。 我正在尝试如下,但失败了。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Escape)
{
if (genac.Visible==true )// Checking GeneralAccount Visible or Not
{
genac.Visible = false;
dgv.Focus();
}
else
{
//Referenced Delegate to the Event for Closing or set visible true or false
//for CashDeposit UserControls From WinForm Application.
cashdepositkeydownevent cdkd = CashDepositKeyDownEvent;
if (cdkd != null)
cdkd(ref msg, keyData);
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
如果GeneralControls Visible并按Escape键,则上述工作正常。如果设置不可见,则在formLoad Eventhandller上显示visible = false,如果我按Escape而不是抛出错误
“空引用异常未处理。,对象引用未设置”
。在
if (genac.Visible==true )// Checking GeneralAccount Visible or Not
如何解决?