6

まず、マウスホイールイベントがVisual Studio 2008のイベントペインに表示されないため、非常に煩わしいです。

私はオンラインで正しいフォーマットを見つけ、これを私のコードに書きました:

    private void Form1_MouseWheel(object sender, MouseEventArgs e)
    {
        Debug.WriteLine("Foo");
    }

...マウスホイールを回転させても応答がありません。

私はコードのメインクラス領域でこれを行っていますが、デザイナーには1つのフォーム/ウィンドウなどが含まれているため、マウスのフォーカスが失われることはありません。

namespace BlahBlah
{
    public partial class Form1 : Form
    {

対照的に、私はマウスホイールの真上にこの方法があり、正常に機能します。

    private void Form1_MouseClick(object sender, MouseEventArgs e)
    {
        Debug.WriteLine("Foo");
    }

推測しなければならないのであれば、コードをフォームに正しくリンクしていないと思います(別名:デザイナーのイベントパネルからこのイベントを追加した場合にVisual Studioが行うすべてのこと)。しかし、私は間違っているか、単にいくつかのばかげた誤りを犯している可能性があります。

マウスホイールを回転させたときに、なんらかの応答を得るのを手伝ってもらえますか?ありがとう!

4

4 に答える 4

12

マウスホイールイベントを設定する必要があります。

これをForm1のコンストラクターに追加します(InitalizeComponents();の後)

this.MouseWheel+= new MouseEventHandler(Form1_MouseWheel);
于 2009-07-27T19:40:22.117 に答える
6

コメントで返答するのに十分な評判はありませんが、あなたの副次的な質問に対する答えは、代表者を設定する必要があるということです。ただし、プロパティペインでダブルクリックして作成すると、コードが自動的に生成され、InitializeComponentメソッドの*.designer.csファイルに配置されます。

于 2009-07-27T19:55:28.873 に答える
1

その特定のイベントをサブスクライブする方法はわかりませんが、代わりにフォームの適切なメソッドをオーバーライドできます。

于 2009-07-27T19:40:21.073 に答える
1

この場合OnMouseWheel、イベントに登録するのではなく、メンバー関数をオーバーライドするのが最善です。例えば:

public class MyFrm : Form
{
    protected override void OnMouseWheel(MouseEventArgs e)
    {
        /*Handle the mouse wheel here*/
        base.OnMouseWheel(e);
    }
}
于 2012-04-13T19:29:47.393 に答える