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

マウスホイールの取得について

環境/言語:[windowsXP C#  .NET Framework2.0]
分類:[.NET]

おはようございます。

http://vbdotnet.fc2web.com/csharp/mouse/Mouse02.htm
をみて

private void InitializeComponent()
{

//Image1
this.Image1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.Image1_MouseWheel);

}
を フォーム デザイナで生成されたコードに追加し

private void Image1_MouseWheel(object sender, MouseEventArgs e)
{
   ・・・・
   ・・・・
}
と書きましたが、取得できていません。
他に何かする必要があるのでしょうか。
指導お願いします。
2007/01/15(Mon) 12:18:55 編集(投稿者)

 たしか、対象コントロールにフォーカスがないとイベントが拾えなかったと思います。
 この場合は「Image1(何のコントロールかはわかりませんが)」にフォーカスがある必要があります。
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.mousewheel(VS.80).aspx
を良く見ると、サマリに何気なく「コントロールにフォーカスがあるときに」と言う文言があることに気づくと思います。
PictureBox はフォーカスをもてないコントロールなので、必然的に MouseWheel は発生しないと言うことになります。
逆に、あるフォーカスを持てるコントロール(ListView とか TextBox)がフォーカスを持っている場合、そのコントロール上にマウスが存在していなくてもそのコントロールの MouseWheel イベントは発生します。
あと、フォーカスをもっているコントロールが存在しない場合は、コンテナコントロール(最上位は Form ですね)の MouseWheel イベントが発生します。
この仕様に則ってそれらしくコーディングする必要があるでしょう。
■No18757に返信(Hongliangさんの記事)
> PictureBox はフォーカスをもてないコントロールなので、必然的に MouseWheel は発生しないと言うことになります。

知りませんでした。勉強になりました。

> 逆に、あるフォーカスを持てるコントロール(ListView とか TextBox)がフォーカスを持っている場合、そのコントロール上にマウスが存在していなくてもそのコントロールの MouseWheel イベントは発生します。
> あと、フォーカスをもっているコントロールが存在しない場合は、コンテナコントロール(最上位は Form ですね)の MouseWheel イベントが発生します。
> この仕様に則ってそれらしくコーディングする必要があるでしょう。

なるほど、MouseMoveイベント内でImage1.Foucs()で取得することができました。

オノデラさん、Hongliangさんありがとうございます。
解決済み!

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