2012-11-12 41 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變得瘋狂。