マウスホイールでのスクロールを抑止する方法

文書番号 : 83431     文書種別 : 使用方法     登録日 : 2018/11/29     最終更新日 : 2018/11/29
文書を印刷する
対象製品
MultiRow for Windows Forms 10.0J
詳細
マウスホイール操作を禁止する機能は搭載しておりませんが、GcMultiRowクラスを継承したコントロールのWndProcメソッド内でマウスホイールの操作をキャンセルすることが可能です。

以下にサンプルコードを紹介します。

[Visual Basic]
Public Class Form1

    Private CustomGrid1 As CustomGrid
    
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' 独自のグリッドの生成
        CustomGrid1 = New CustomGrid
        CustomGrid1.Dock = DockStyle.Fill

        CustomGrid1.Template = GrapeCity.Win.MultiRow.Template.CreateGridTemplate(2)
        CustomGrid1.RowCount = 20
        Me.Controls.Add(CustomGrid1)
    End Sub
End Class

' GcMultiRowを継承したクラスの作成
Public Class CustomGrid
    Inherits GrapeCity.Win.MultiRow.GcMultiRow

    Protected Overrides Sub WndProc(ByRef m As Message)
        ' マウスホイール操作のキャンセル
        Const WM_MOUSEWHEEL As Integer = &H20A
        If m.Msg = WM_MOUSEWHEEL Then
            m.Msg = 0
        End If

        ' 本来の動作の実行
        MyBase.WndProc(m)
    End Sub
End Class

[C#]
private CustomGrid CustomGrid1;
private void Form1_Load(object sender, EventArgs e)
{
    // 独自のグリッドの生成
    CustomGrid1 = new CustomGrid();
    CustomGrid1.Dock = DockStyle.Fill;
    CustomGrid1.Template = GrapeCity.Win.MultiRow.Template.CreateGridTemplate(2);
    CustomGrid1.RowCount = 20;
    this.Controls.Add(CustomGrid1);
}

// GcMultiRowを継承したクラスの作成
public class CustomGrid : GrapeCity.Win.MultiRow.GcMultiRow
{
    protected override void WndProc(ref Message m)
    {
        // マウスホイール操作のキャンセル
        const Int32 WM_MOUSEWHEEL = 0x20A;
        if (m.Msg == WM_MOUSEWHEEL)
        {
            m.Msg = 0;
        }

        // 本来の動作の実行
        base.WndProc(ref m);
    }
}