• 締切済み

コントロールに邪魔されずにイベントを取得したい

visual studio 2008 express edition C#3.5 を使用しています。 http://ranobe.com/up/src/up363465.jpg のように buttonが乗ったsplitContainer1のPanel1(左側)に private void splitContainer1_Panel1_MouseEnter(object sender, EventArgs e) { MessageBox.Show("Test"); } というマウスがのったらメッセージボックスを表示するイベントを設定しています。 ただこれはbuttonの上だと反応しません・・・ なんとかしてbuttonというか乗せてるコントロールに邪魔されずに反応させることはできないでしょうか?

みんなの回答

回答No.2

フォームのコンストラクタで、splitContainer1のPanel1上のコントロールにイベントハンドラを追加します。 public Form1() { InitializeComponent(); foreach (Control x in splitContainer1.Panel1.Controls) { x.MouseEnter += new System.EventHandler(this.splitContainer1_Panel1_MouseEnter); } }

takagoo100
質問者

お礼

ご返答ありがとうございます。 これも便利で為にはなったのですが、 そうではなくて、自分が言いたいのはControlsにある要素一つ一つを弄るのでなく Panel1側(つまり一箇所)だけでなんとかそういう機能を実現できないかぁと思いました。 なんでそれに拘っているかというと、例えば Controlsに追加するのがbuttonなどのコントロールではなく form(TopLevel=falseで追加できます)だった場合に 摘むところのキャプションバーの上だとイベントが反応しないからです。 なのでPanel上に乗っている(重なっている)コントロールに関係なく そのPanelの範囲ならイベントを効かせたいと思いました。 そういう方法はできないのでしょうか?

回答No.1

ボタンのMouseEnterイベント処理をsplitContainer1_Panel1_MouseEnterに指定します。

takagoo100
質問者

お礼

ご返答ありがとうございます。 なるほど、そのやり方でできました。ありがとうございます。 ところで、乗せる側(ボタン)ではなくて、 splitContainerの方だけでやる方法というのはあるのでしょうか?

関連するQ&A