|
分類:[.NET 全般]
初めて質問されて頂きます。宜しくお願いいたします。
複数のFormを同時に表示するアプリケーションの操作について困っています。
例えばFormAとFormBがあったとします。
FormA にはmenuStriptのコントロールだけ、FormBにはボタン等いくつかのコントロールが
あったとします。
FormBにフォーカスしていた場合、FormAのmenuStripのアイテムのどれかをクリックしても
フォーカスがFormAに移るだけです。このタイミングでmenuStripのアイテムがクリックさ
れた動作(例えば、メニューアイテムであればメニューを開く)までをしたいと思いますが
うまくいきません。
開発環境は以下になります。
PC:Windows XP
言語:C#
開発環境:Visual Studio 2005
試しに、menuStrip_ItemClickedイベントで強引にメニューを開いたりしてみましたが、
どうも一度開いてもまた閉じているようです。
以下は、その時のサンプルソースですが、このようなベタな方法ではなくコントロール
の種類に依存しないもっとスマートな方法があるかと思っています。
private bool bIsCliking = false; // 再帰呼び出しを防ぐためのフラグ
private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
if ( !bIsCliking )
{
bIsCliking = true;
((ToolStripMenuItem)(e.ClickedItem)).ShowDropDown();
}
bIsCliking = false;
}
また、マウスカーソルがそのFormに来たら強制的にフォーカスされる方法がありますが、
これはFormの上に表示したメッセージダイアログが隠れたりするのでやりたくありません。
お世話様ですが、どなたかよい方法ご存知の方いらっしゃいましたらアドバイスをお願いい
たします。
|