
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も見ています
-
CellEnterイベント仕様について
Visual Basic(VBA)
-
ExcelのComboboxでマウスのスクロールを有効にしたい
Excel(エクセル)
-
CloseとDisposeの違い
Visual Basic(VBA)
-
-
4
マウスでコロコロしたいんですが…
Visual Basic(VBA)
-
5
VB.NET DataGridView 縦スクロールバーを常に表示
Visual Basic(VBA)
-
6
DataGridView からの値取得に関して
Visual Basic(VBA)
-
7
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
8
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
9
DataGridViewでセルを結合したい
Visual Basic(VBA)
-
10
フォームの再読み込み
Visual Basic(VBA)
-
11
データグリッドビューの結合セルに文字を表示させたい
Visual Basic(VBA)
-
12
[VB.net] DataGridViewのコンボボックス:部分一致等の機能追加
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どこからも呼ばれていない無意...
-
共通で使う関数を集めたクラス...
-
java eclipse 型に解決できません
-
EclipseでJSPのコンパイルエラー
-
同じクラスにならない確率を教...
-
体育祭クラス全員参加のムカデ...
-
java swing JLabelの型とは?
-
そんなにお金がなくても年に1度...
-
Cstring(日本語含む)をcharに...
-
配列の重複する値とその個数を...
-
同一パッケージにあるクラスが...
-
複数のクラスで共通した関数を...
-
コンボボックスのマウスホイー...
-
僕の出身中学校は200人同級生が...
-
クラスの衝突
-
中学生です。 私は教室の黒板に...
-
eclipseのパッケージって何?
-
Javaについて、mathクラスを使...
-
「隣の芝生は青く見える」現象...
-
恋愛
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じクラスにならない確率を教...
-
そんなにお金がなくても年に1度...
-
河合塾のクラス分けについて
-
今回のクラス替え最悪でした、...
-
3年間同じクラスになる確率
-
java eclipse 型に解決できません
-
恋愛
-
同一パッケージにあるクラスが...
-
小学4年の頃、好きな同級生にス...
-
配列の重複する値とその個数を...
-
main()を持つクラスが2つ以上...
-
EclipseでJSPのコンパイルエラー
-
共通で使う関数を集めたクラス...
-
他クラスのすごくかっこいい同...
-
どこからも呼ばれていない無意...
-
中学生です。 私は教室の黒板に...
-
ネスカフェ エクセラ と UCCク...
-
dllと同じプロジェクトにする方法
-
「隣の芝生は青く見える」現象...
-
コンボボックスのマウスホイー...
おすすめ情報