none
NumericUpDownコントロールをMouseWheelイベントで反応させたくない RRS feed

  • 質問

  • みなさん

    こんにちは。

    通常、NumericUpDownコントロールは、MouseWheelを動かすと

    反応しますが、それを禁止する方法はありますでしょうか?

    私が考えた方法は、MouseWheelイベント処理の関数を作って

    値が変化しても、もとの値を代入して元に戻すなどの方法を思いついたのですが

    まだ実装はしていませんが、そういう方法ではなく、もっと根本的に、

    NumericUpDownコントロールそのものがMouseWheelに反応しないように

    設定するようなことは可能でしょうか?

    よろしく。

     

     

    2007年1月18日 7:49

すべての返信

  • chagama さん、こんにちは。

     chagama さんからの引用
    通常、NumericUpDownコントロールは、MouseWheelを動かすと反応しますが、それを禁止する方法はありますでしょうか?

    NumericUpDown コントロールを継承したカスタム コントロールで、
    WM_MOUSEWHEEL を捨ててしまえば可能でしょう。

    2007年1月18日 8:24
  • お世話になります。
    NumericUpDown を継承したコントロールをつくって、 OnMouseWheel をオーバーライドして何もしないようにする、とか。

    2007年1月18日 8:25
  • みなさん

    アドバイスありがとございます。

    >NumericUpDown コントロールを継承したカスタム コントロールで、

    >OnMouseWheel をオーバーライドして何もしないようにする、とか。

    継承したコントロールとか
    オーバーライドとか

    私には、まったく未知の用語ですので、これらのキーワードを元にインターネットで調べてみます。
    ありがとうございました。

    2007年1月18日 8:42
  • chagama さん、こんにちは。
    心配なさらなくとも、リファレンスに書いてあります。

     chagama さんからの引用
    継承したコントロールとか

    これは、

    さまざまなカスタム コントロール (microsoft.com)

    ここの拡張コントロールに該当します。

    オーバーライドとか

    これは、

    プロパティとメソッドのオーバーライド (microsoft.com)

    こちらに、Overrides キーワードと共に書いてあります。

    2007年1月18日 9:06
  • はじめまして、こんにちわ。

    簡単にできる方法でしたら、NumericUpDownのプロパティにあるIncrementの値を0にしてはどうですか?

    イベント自体は発生しますが、増減値が0なので、変化はないかと。

    ・・・ボタンによる増減は利用される?となると、やはり駄目ですね。^^;

    他の方がおっしゃるように、コンポーネントクラスを利用して、イベントを制御したほうがいいですね。

    お役にたてず、すみません。

    2007年2月5日 2:28
  • Windowsコントロールライブラリを使用してあたらしいプロジェクトを作成し、UserControl1.Designer.vbを開いて、3行目の継承をNumericUpDownに変更。

        Inherits System.Windows.Forms.NumericUpDown

    UserControl.vbを開き以下を追加

        Protected Overrides Sub OnMouseWheel(ByVal e As System.Windows.Forms.MouseEventArgs)
            'MyBase.OnMouseWheel(e)
        End Sub

    MyBase.OnMouseWheel(e)がコメントアウトされているので、イベントが捨てられる。

    こんな感じでどうですか?


     

    2007年2月6日 0:34
  •  なおこ#わんくま さんからの引用
    NumericUpDown を継承したコントロールをつくって、 OnMouseWheel をオーバーライドして何もしないようにする、とか。

    2007年2月6日 8:17
  • たいへん遅くなりましたが、教えていただいた方法でできました。

    皆さん、ありがとうございました。

    ちなみに、同じようにしてComboBoxもMouseWheelで反応しないようにできるかなと思ったのですが、

    やってみたらダメでした。反応しちゃいました。もう少し調べてみます。

    2007年2月20日 7:59