1

私は以下のように2つのUserControlsを持っています:

  1. CashDeposit
  2. GeneralAccount

GeneralAccountUserControlがcashdepositUserControlに追加され、フォームの読み込み時に非表示に設定されました。GeneralAccountは、Datagridviewtexbox列のKeyUpイベントから Ctrl+Cを押すと表示されます。

これら2つのコントロール間のProcessCmdKeyEventHandllerのハンドルについて混乱しています。私の仕事はEscキーを押すことです。表示されているコントロールは非表示になっているはずです。GeneralaccountよりもCashDepositに表示されるGeneralaccountは、CashDepositではなくEscキーを押したときにのみ表示されないようにする必要があります。また、GeneralAccountが表示されておらず、ユーザーがEscキーを押すと、CashDepositUsercontrolsは非表示になります。私はこれを次のように試していますが失敗します。

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が表示され、Escキーを押すと、上記はうまく機能します。設定どおりに表示されない場合は、formLoadEventhandllerでvisible=falseを設定し、それよりもエスケープを押すと、次のようにエラーがスローされます。

「Null参照例外が処理されませんでした。オブジェクト参照が設定されていません」</p>

。で

if (genac.Visible==true )// Checking GeneralAccount Visible or Not

それを解決する方法は?

4

0 に答える 0