RUNさん、mあさん、@echoさん、れいさん返信ありがとうございます。
教えて頂いたソースをC#に変更して実行したら
・境界値の挙動で2ノッチしないと値が変わらない・・・
・VBも計算式もよくわからなかったので、値を減らす場合の処理がいいのか不明・・・
といった問題が残りましたが、大体考えていた挙動になりましたので、
解決済とさせて頂きます。
ありがとうございました。
--------------------------
以下れいさんに教えて頂いたソースのC#に変更したものです。
public class SlowWheelNumericUpDown : NumericUpDown
{
private int wheeldelta = 0;
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x20A)
{
if (SystemInformation.MouseWheelScrollLines > 0)
{
int delta;
wheeldelta += ((int)m.WParam >> 16);
delta = (wheeldelta / 120) + 120 / SystemInformation.MouseWheelScrollLines;
if (wheeldelta < 0)
{
delta = -delta;
}
wheeldelta = wheeldelta % 120;
m.WParam = (IntPtr)((delta << 16) | ((int)m.WParam & 0xffff));
}
}
base.WndProc(ref m);
}
}
|