C#WinForms:私はMDIフォームを持っていて、アクションツールバーのボタンを開くために、例えば "ALT + C"などのメニュー用のショートカットキーをいくつか定義しました。問題は、親フォーム内でこの子フォームを開いても、親フォーム内のどこかでマウスをクリックし、「ACLT + C」を押しても子フォームの「アクション」メニューを開いていることです。どうすればこれを防ぐことができますか?窓がtrueに設定されactionWindow開いたとき親フォームが子フォームのショートカットキーに応答しているのはなぜですか?
答えて
は、フォーム上
bool actionWindow = false
をフラグを追加します。リスナーでactionWindowを確認します。その後、actionWindowが閉じると、boolをfalseに戻します。
try:子フォームでput e.Handled = true;キープレスイベントで
もっと良い解決策があるかもしれませんが、フォームにフォーカスがあるかどうかをテストするのが簡単な方法です。だから、あなたの子供のイベントハンドラでは、先頭に次の行を追加します。
if (this.MdiParent.ActiveControl.Name != this.Name)
{
return;
}
を明らかにこれはただ実行しているから、その後のコードを防ぐ、発射からイベントを防止されていません。
編集:メニュー項目のためのイベントハンドラがない場合は、これを行うに私は考えることができる唯一の他の方法は、子フォームのEnter
とLeave
イベントのハンドラを作成することです:
private void ChildForm_Leave(object sender, EventArgs e)
{
menuItem.Enabled = false;
}
private void ChildForm_Enter(object sender, EventArgs e)
{
menuItem.Enabled = true;
}
それは動作しますか?親イベントは、子イベントの前に発生します。 –
話が早すぎる...うまくいきます、申し訳ありません! –
Paul私の子フォームのどのメソッド、イベントハンドラなどであなたのコードを試してみるべきですか? – Bohn
- 1. MDI子フォームがWinFormsの親フォームに適合しない
- 2. 子フォームと親フォームがVb.netで一致しない
- 3. 子フォームからクローズ親フォーム
- 4. 親フォームのAでは、子フォームからその兄弟フォーム
- 5. 親フォームは子フォームにアクセスできないPublicプロパティ - Winforms C#
- 6. 子フォームからの親フォームの呼び出しメソッド親フォームのデータグリッドビューの再ロード
- 7. 子要素のイベントエミッタに親要素が応答しない
- 8. ActiveadminとFormtastic:応答しないフォーム:サイズ
- 9. 親フォーム子フォームが閉じているときに開きますか?
- 10. 親フォームからアクティブな子フォームのパブリックメソッドにアクセス
- 11. 子フォームからの親フォームのデータグリッドビューを更新しますか?
- 12. vb.netの子フォームが親フォーム内のパネルコントロールの背後にある
- 13. MDI親フォームのラベルは、子フォームのバックグラウンドに残っていませんか?
- 14. jqueryフォームの検証でajaxが応答しない
- 15. フォームのサブミットボタンに応答しないでください
- 16. C#別の子フォームが開いているときにMDI親の子フォームを無効にする方法
- 17. 親フォームから子フォームに値を渡しますか?
- 18. GMSPolygonがタップに応答しないのはなぜですか?
- 19. 子フォームからMDI親フォームのラベルテキストにアクセスできません
- 20. Vue.js、親が子イベントに応答しない
- 21. FirefoxのHTMLフォームの入力が応答しない
- 22. ループ内の親フォームと子フォームC#
- 23. 親フォームの変数をmdiの子フォームから設定する
- 24. 別のフォームがMDIの親で実行されている場合、子フォームからチェックする方法は?
- 25. 子フォームから親フォームに値を渡す方法は?
- 26. 応答セマンティックUIフォーム
- 27. 子フォームからの親フォームの呼び出しメソッド
- 28. 子フォームから親フォームへデータを移動する方法は?
- 29. C#Windowsフォームの削除キーが応答しない
- 30. MDI親フォームがフォーカスされているときに子フォームのZインデックスをリセットするのはなぜですか?
それ"ハック"のようなもので、コードレビューに合格しません。 – Bohn
私はMDIフォームで何もしていませんが、記述している動作が正しいことは私には意味があります。 MDIを親フォームとして使用する必要がありますか? –
"ALT + C"をクリックするとVB 6.0とVB 6.0からこのアプリケーションがアップグレードされました。子フォームのアクションメニューは表示されません。コードレビューで、彼はいいえ、それはVBとは違っているのですが、どうしてあなたはホワイトボックスなどではないのですか? – Bohn