0

我有几个 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 是否有可能接受用户的否定输入?

4

1 回答 1

0

问题出在 KeyDown 事件中(必须完全删除它)以及我试图输入为数字的格式。我有“,”分隔符,而不是“。” 在我的 Visual Studio 中(由于本地化)。所以输入“。” 让 NumericUpDown 发狂。

于 2012-11-12T12:42:16.857 回答