- - PR -
コンボボックスでマウスのスクロールを抑制したい
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-10-17 15:29
とりあえずこんな感じでマウスホイールでの項目変更は無視出来ましたけど もちろんSelectIndexChangedイベントは発生しません。 public partial class ExComboBox : GrapeCity.Win.Editors.GcComboBox { public ExComboBox() { InitializeComponent(); } protected override void WndProc(ref Message m) { const int WM_MOUSEWHEEL = 0x020A; switch (m.Msg) { case WM_MOUSEWHEEL: System.Diagnostics.Debug.Print("ホイールなんて無視だ!"); break; default: base.WndProc(ref m); break; } } } | ||||||||||||
|
投稿日時: 2008-10-17 16:04
あ、VBだったね
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) Const WM_MOUSEWHEEL As Integer = &H20A Select Case m.Msg Case WM_MOUSEWHEEL Debug.Print("ホイールなんてKUSOKURAE!") Case Else MyBase.WndProc(m) End Select End Sub | ||||||||||||
|
投稿日時: 2008-10-17 21:21
書き込みありがとうございます。
早速試してみましたが、コンボボックス内にカーソルを置き ホイールをまわしてみると値は変化してしまいました。 (コンボボックス以外のコントロールにフォーカスがある場合は 正常にキャッチする事が出来ました・・・。) コンボボックス内にフォーカスがある場合は、WND_PROCから値を 取得できないということなんでしょうか・・・<m(__)m> | ||||||||||||
|
投稿日時: 2008-10-17 21:34
WndProcはどこでoverrideしてます?
Formの継承クラスでしていませんか??
未記入さんが記載しているように、GrapeCityのコンボボックスコントロールの 継承クラスを準備して書いてみてください。 そして今配置しているGrapeCityのコンボボックスコントロールを 継承したコンボボックスに置き換えてください。 ダメであれば、確認したコードを載せてみて下さい。 [ メッセージ編集済み 編集者: Toshi 編集日時 2008-10-17 21:36 ] | ||||||||||||
|
投稿日時: 2008-10-17 21:37
のはずですよ。 コンボボックスはその名が示すとおり、複数のコントロールの組み合わせ(テキストボックス+ボタン+リストだっけ?)で出来てるので、台座部分の WndProc でメッセージを捕捉しても、リストやテキストボックス部分のメッセージを捕捉することは出来ません。 やるとしたら、メッセージを捕捉するべきコントロールのウィンドウハンドルを手に入れて、古典的なサブクラス化でホイール関係のメッセージを補足するしかないんじゃないかと。 | ||||||||||||
|
投稿日時: 2008-10-17 22:23
キー入力とかはとれない気がするのですが、 マウスホイールのアクションはとれませんでしたっけ?? 一応手元で以下のコード確認してマウスホイールのメッセージがとれたので、問題ないと思いますが・・・ ※ Visual C#2005 Express System.Windows.Forms.ComboBoxの継承クラスで確認
| ||||||||||||
|
投稿日時: 2008-10-17 22:25
えーできたよぅ(´・ω・`) 今ぱぱっと普通のComboBoxで試してみたけどできたよぅ(´・ω・`) ・新規にプロジェクト作成(Windowsアプリ) ・プロジェクトに[追加]-[新しい項目]でカスタムコントロールを追加(ExComboBox.vb) ・デフォルトで継承元がSystem.Windows.Forms.ControlなのでこれをSystem.Windows.Forms.ComboBoxに書き換える(ExComboBox.Designer.vb) ・2008-10-17 16:04のコードをExComboBox.vbに貼り付ける ・ビルドするとツールボックスにExComboBoxが追加されるのでFormに配置 ・適当にアイテム追加 ・実行→ウマー DropDownStyleがSimpleでもDropDownでもDropDownListでも補足できました テキストボックス内にフォーカスがある場合でも、リスト展開時でも補足できました 俺何か勘違いしてる?? | ||||||||||||
|
投稿日時: 2008-10-17 23:19
ホイール系のメッセージで試したことないけど、テキストボックス向けのメッセージなんかは横取りできないはずなんだけど? ホイール系のメッセージに関しては台座部分でとれちゃうのですね。 知りませんでした m(_ _)m |