DataGridView内にコンボボックスを設定しております。
マウスのホイールボタンは、DataGridViewの縦スクロールに
使いたいのですが、DataGridView内のコンボボックスに
カーソルがある場合、コンボボックス内のデータが変わってしまいます。
ユーザー側と打ち合わせた結果、コンボボックスにカーソルが
ある時に、マウスのホイールボタンを無効に出来ないかと
言われております。
色々調べてみましたが、私では分からず、教えて下さい。
(サンプルソース)
Dim column1 As New DataGridViewComboBoxColumn()
With DataGridView1
.Columns.Clear()
.Columns.Add("Col01", "列1")
With column1
.Items.AddRange(New String() {"Item01", "Item02", "Item03"})
.Name = "Col02"
.HeaderText = "列2"
End With
.Columns.Add(column1)
For i As Integer = 0 To 100
.Rows.Add()
Next i
End With
No.2ベストアンサー
- 回答日時:
#1です。
その後調べてみたのですが、WndProcをオーバーライドしてマウスホイールメッセージを無効化する方法をやろうとしてみたのですが、適切なクラスが私には分からなかったので別の方法を考えました。
DataGridViewComboBoxが編集状態にあるときにMouseWheelイベントを感知した場合には編集を終了する。という方法を試してみました。
うまくいきそうでしたので下記のコードを参考にしてみてください。
---------------
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim column1 As New DataGridViewComboBoxColumn()
With DataGridView1
.Columns.Clear()
.Columns.Add("Col01", "列1")
With column1
.Items.AddRange(New String() {"Item01", "Item02", "Item03"})
.Name = "Col02"
.HeaderText = "列2"
End With
.Columns.Add(column1)
For i As Integer = 0 To 100
.Rows.Add()
Next i
End With
End Sub
Private dataGridViewComboBox As DataGridViewComboBoxEditingControl = Nothing
Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
If Not (Me.dataGridViewComboBox Is Nothing) Then
RemoveHandler Me.dataGridViewComboBox.MouseWheel, _
AddressOf dataGridViewComboBox_MouseWheel
Me.dataGridViewComboBox = Nothing
End If
End Sub
Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
If TypeOf e.Control Is DataGridViewComboBoxEditingControl Then
Dim dgv As DataGridView = CType(sender, DataGridView)
If dgv.CurrentCell.OwningColumn.Name = "Col02" Then
Me.dataGridViewComboBox = _
CType(e.Control, DataGridViewComboBoxEditingControl)
AddHandler Me.dataGridViewComboBox.MouseWheel, _
AddressOf dataGridViewComboBox_MouseWheel
End If
End If
End Sub
Private Sub dataGridViewComboBox_MouseWheel(ByVal sender As Object, _
ByVal e As EventArgs)
Me.DataGridView1.EndEdit()
End Sub
End Class
No.1
- 回答日時:
直接の回答ではないのですが、下記の記事&議論が参考になるのではないでしょうか。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …
http://www.atmarkit.co.jp/fdotnet/dotnettips/467 …
キーワードは「承継クラス」、「WndProcをオーバーライド」、「WM_MOUSEWHEEL」です。
詳しくは分かりかねますが、Datagridviewcomboboxcell?クラスの承継クラスを作って、WindProcをオーバーライド、そこでWM_MOUSEWHEELメッセージをはじくようにする。というような流れだと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて? 1 2023/02/10 18:30
- Visual Basic(VBA) ExcelVBAで、型が一致しませんのエラーについて 3 2023/06/20 09:51
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
ExcelのComboboxでマウスのスクロールを有効にしたい
Excel(エクセル)
-
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
CloseとDisposeの違い
Visual Basic(VBA)
-
-
4
VB.NET DataGridView 縦スクロールバーを常に表示
Visual Basic(VBA)
-
5
VBAのリストボックスをマウスでスクロール
PowerPoint(パワーポイント)
-
6
有無、要否、賛否、是非、可否、当否…これらの言葉について
その他(教育・科学・学問)
-
7
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
8
テキストボックスかラベル上の表示を縦に中央揃えしたい
Visual Basic(VBA)
-
9
Select Case文でこのようなことは可能でしょうか?
Visual Basic(VBA)
-
10
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
11
ひとつのファイルにクラスは1つ?
Java
-
12
[VB.net] DataGridViewのコンボボックス:部分一致等の機能追加
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「エンクロージング型」と「外...
-
同じクラスにならない確率を教...
-
配列の重複する値とその個数を...
-
マイクロSDカード購入しようと...
-
エクセルVBAでのwitheventsにつ...
-
「天声人語」をインターネット...
-
JAVA3D実行時のエラー
-
同一パッケージにあるクラスが...
-
VBAもしくはVB6:クラスの中で...
-
河合塾のクラス分けについて
-
ATLとMFCの違いは何でしょうか?
-
javaのコンパイルができません...
-
「囲うインスタンス」のエラー...
-
重複エラーを解決するには
-
共通で使う関数を集めたクラス...
-
基本情報技術者試験のJava問題...
-
Eclipseでのクラス作成について
-
コンボボックスのマウスホイー...
-
クラス見てから 女の子5人 ネタ...
-
Pure JVM と MS-JVMについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
3年間同じクラスになる確率
-
「天声人語」をインターネット...
-
配列の重複する値とその個数を...
-
自分事ですが、私のLINEのスク...
-
java eclipse 型に解決できません
-
同じクラスにならない確率を教...
-
どこからも呼ばれていない無意...
-
グローバルIPとプライベートIP...
-
担任にプレゼント
-
数学の計算問題。 3年間同じク...
-
クラスのプロパティに構造体を...
-
河合塾のクラス分けについて
-
IPアドレスのクラスAを取得して...
-
共通で使う関数を集めたクラス...
-
自作のクラスファイルがインポ...
-
1 つのヘッダファイルに複数の...
-
ヒートテックやファイバーヒー...
-
dllと同じプロジェクトにする方法
-
main()を持つクラスが2つ以上...
-
同一パッケージにあるクラスが...
おすすめ情報