我有两个用户控件,如下所示:
- 现金存款
- 一般账户
GeneralAccount UserControl 添加到 cashdeposit UserControl 并在表单加载时设置为不可见。GeneralAccount 将通过在 Datagridview texbox 列 KeyUp 事件中 按Ctrl + C可见。
我对这两个控件之间的句柄ProcessCmdKey EventHandller感到困惑。我的任务是按下 Escape 键,可见控件应该是不可见的。如果 Generalaccount 在 CashDeposit 上可见,Generalaccount 应该只在按下 Escape 键而不是 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 上设置为可见 = false 并且如果我按 Escape 而不是它则抛出错误之类的设置它不可见
“未处理空引用异常。,未设置对象引用”</p>
. 在
if (genac.Visible==true )// Checking GeneralAccount Visible or Not
如何解决?