我有几个 groupBoxes 控件,每个控件都有一个 NumericUpDown 控件。NumericUpDowns 有一个小的修改 - 它们也可以在小数的负范围内递减。这是代码:
//Add KeyDown event to the numericUpDown control
numericUpDownGBPC12_angleRange.KeyDown += new KeyEventHandler(numericUpDownNegative);
函数numericUpDownNegative的代码如下:
void numericUpDownNegative(object sender, KeyEventArgs e)
{
NumericUpDown temp = (NumericUpDown)sender;
temp.Value -= temp.Increment;
sender = (object)temp;
NumericUpDown temp = (NumericUpDown)sender;
}
非常欢迎改进上述代码的建议,但是如果可以在 NumericUpDown 中启用负输入,我会更感兴趣。上面的代码有效,但是当我尝试输入负数时,我得到了一些奇怪的东西。此行为不适用于未修改的 NumericUpDown。
示例: 假设 numericUpDownGBPC12_angleRange 的最小值为 -70.0000000000,最大值为 70.0000000000,我通过控件的最小/最大属性参数设置。控件的起始值为 0.0000000000。如果我按下向下按钮,我会相应地得到 -0.0000000001、-0.0000000002、-0.0000000003 等,直到达到 -70.0000000000。但是,如果我决定输入 -x.xxxxxxxxxx(比如说 -24.2398324119),我会得到 x-0.0000000000(4-0.0000000000)。因此,我不仅无法输入完整的数字 24(在这种情况下,NumericUpDown 似乎采用了最后输入的数字,即 4),而且我在点完全消失之后得到了整个部分,除非它是通过使用以下情况设置的如果问题仅出在该点之前的部分。所以只能更改第一个数字(在数字的最左侧)。:-/
我正在考虑使用 textBox-controls,但是作为界面一部分的数字字段的数量将产生巨大的开销,因为每个 textBox 都会被解析(我们都知道,遗憾的是,许多用户喜欢尝试那些从未打算进行试验;)) 以确保输入了某个数字。尽管有负面影响,但 NumericUpDown 具有非常好的功能,例如 - 只能输入一个数字,您还可以指定精度、值的范围等。
所以问题又是 - NumericUpDown 是否有可能接受用户的否定输入?