1

我有两个用户控件,如下所示:

  1. 现金存款
  2. 一般账户

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

如何解决?

4

0 回答 0