DataGridViewはマウスホイールのスクロールで3行送りです。(OS設定に依存します)
このスクロール量を1行送りに変えます。
DataGridViewを継承したクラスを作って、OnMouseWheelでチョイチョイとすればいい感じになります。
MouseEventArgsコンストラクターの第5引数が若干意味不明です。
なにやら、マウスホイールの1ラッチで120単位の移動量となるとか、説明を見てもよくわかりません。
実行すると、マウスホイールを手前に1ラッチすると、e.Deltaには-120が入っています。
MouseWheelScrollLinesには3が入っています。
つまり、第5引数には-40を設定すれば、1行送りになるかというと、確かにそうなります。
マウスの設定でスクロールする行数を1に変更しても、e.Deltaには-120が入ってきます。
この場合、-120でも1行送りになります。
どういう仕組なの?
よくわかりませんが、結果オーライで行きます。
- public class DataGridViewEx : DataGridView
- {
- // ホイールマウス制御
- protected override void OnMouseWheel(MouseEventArgs e)
- {
- // マウス ホイールを回転したときにスクロールする行数を取得
- Int32 scroll = SystemInformation.MouseWheelScrollLines;
- // MouseEventArgsクラスの移動量を1行に変更
- MouseEventArgs ex = new MouseEventArgs(e.Button, e.Clicks, e.X, e.Y, e.Delta / scroll);
- base.OnMouseWheel(ex);
- }
- }