私は以下のように2つのUserControlsを持っています:
- CashDeposit
- 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
それを解決する方法は?