2012-11-12 42 views
0

我有几个groupBoxes控件在它们的每一个上都有一个NumericUpDown控件。 NumericUpDowns有一个很小的修改 - 它们也可以在十进制的负数范围内递减。下面是代码:NumericUpDown负面输入由用户可能?

//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控件,但是作为接口的一部分,我所拥有的数字字段的数量会因为每个文本框的解析而产生巨大的开销(我们都知道可悲的是很多用户喜欢试验从未打算试验过的东西;))确保输入一定的数字。尽管有负面影响,但NumericUpDown具有非常好的功能,例如 - 只能输入一个数字,并且还可以指定精度,值的范围等。

所以再次问题是 - 是否可能为NumericUpDown接受用户的负面投入?

+0

您是否尝试过将“最小化”设置为-70,将“最大化”设置为70?这样你就不需要这个事件。 – Davio

+0

我已经设置了它们(我将这个添加到我的问题的描述中,因为我只写了关于我的范围)。问题在于NumericUpDown的'正常'行为根本不处理负值。正如您所看到的,您需要进行修改才能进入小数点的负数范围。 – rbaleksandar

+0

我真的不能用标准的NumericUpDown控件重现你的问题。恐怕您需要展示该控件的所有属性。 – LightStriker

回答

0

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