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); } }