我试图覆盖鼠标滚轮控件,以便当鼠标滚轮向上或向下移动时,它只会将numericupdown字段中的值增加1。我相信它当前正在使用控制面板中存储的内容并增加/减小每次值3。

我正在使用以下代码。即使numberOfTextLinesToMove仅为1,并且我看到txtPrice.Value的填充达到了预期的效果,但由于我设置的值不是在numericupdown框中显示的值,其他东西仍在覆盖它

void txtPrice_MouseWheel(object sender, MouseEventArgs e)
        {
            int numberOfTextLinesToMove = e.Delta  / 120;
            if (numberOfTextLinesToMove > 0)
            {
                txtPrice.Value = txtPrice.Value + (txtPrice.Increment * numberOfTextLinesToMove);
            }
            else
            {

                txtPrice.Value = txtPrice.Value - (txtPrice.Increment * numberOfTextLinesToMove);
            }

        }

最佳答案

这是在此处报告的错误:NumericUpDown - use of mouse wheel may result in different increment

微软在2007年2月的回应中指出,他们无法解决此Visual Studio 2008问题。

有两种发布的解决方法,它们都是NumericUpDown的子类。检查链接上的“解决方法”选项卡。

我尝试过的一个(由“NanoWizard”发布):

using System;
using System.Windows.Forms;

internal class NumericUpDownControl : NumericUpDown
{
#region Constants
protected const String UpKey = "{UP}";
protected const String DownKey = "{DOWN}";
#endregion Constants

#region Base Class Overrides
protected override void OnMouseWheel(MouseEventArgs e_)
{
    String key = GetKey(e_.Delta);
    SendKeys.Send(key);
}
#endregion Base Class Overrides

#region Protected Methods
protected static String GetKey(int delta_)
{
    String key = (delta_ < 0) ? DownKey : UpKey;
    return key;
}
#endregion Protected Methods
}

关于c# - Numericupdown鼠标滚轮事件将小数点增加一个以上的增量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5226688/

10-10 22:27