DOBON.NET DOBON.NETプログラミング掲示板過去ログ

MDI子フォームのMouseイベント

環境/言語:[環境:Windows2000 言語:Visual Studio .NET 2003 C#]]
分類:[.NET]

はじめまして。

ボタンコントロールの背景色を
マウスカーソルが乗ったときと離れたときで変えようと
試行錯誤しているのですが上手く動いてくれません。

やろうとしていることは
MDI親フォームロード時に子フォームのインスタンスを作成して
MDI親フォームから子フォームをShowで呼び出した後
子フォームのボタンコントロールのMouseEnterとMouseLeaveで
色を変えるようにしています。

最初に子フォームを開いたときは上手く動きますが、
子フォームをHideして再度Showした場合、
MouseEnterとMouseLeaveイベントが発生しなくなります。

原因がまったくつかめず困っております。
どなたかご教授お願いいたします。
> MDI親フォームから子フォームをShowで呼び出した後
> 子フォームのボタンコントロールのMouseEnterとMouseLeaveで
> 色を変えるようにしています。
>
> 最初に子フォームを開いたときは上手く動きますが、
> 子フォームをHideして再度Showした場合、
> MouseEnterとMouseLeaveイベントが発生しなくなります。

再現しました。
再Show後の初回イベント後に発生しなくなりますね。
AddHandlerしてもだめでした。
キーボードフォーカスは正常のようです。
マウスキャプチャかなんかのハンドルとウィンドウハンドルとの関連付けがすっ飛んでいるような。。。
バグだと思います。
#2005では再現せず
まどかさん
ご返答ありがとうございます。

やっぱりバグなのですかね〜
私の方でもテストしてみましたので、結果をご報告します。
【ウィンドウを非表示(Hide)にした場合のイベント結果】
 × MouseEnter
 × MouseLeave
 × MouseHover
 ○ MouseMove
 ○ MouseDown
 ○ MouseUp
【ウィンドウを閉じた(Close)場合のイベント結果】
 全て○

結局のところ、Closeで閉じれば問題はないのですが、
今から変更するのは工数的に難しいので、
もう少しあがいて駄目ならあきらめます。
ありがとうございました。
すみません。解決するの忘れてました。
解決済み!
VB2003でも再現しました。
○ MouseMove
も同じでした。それでバグ対応ですが、
Button2_MouseMove()はMouseEnterの代わり、Form2_MouseMove()はMouseLeaveの代わりと同じ、としたら、再Show後もうまくいきますネ
(私は初心者なので、それだけの話ですが・・ども、おじゃましました)
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板