2012-07-14 84 views
0

我有一個NumericUpDown控制,我想一個單獨的文本框裏面的值,以減少或增加,這取決於輸入用戶inputes(向上或向下)C#數字增減的具有自動「加/減」功能

我使用什麼事件或代碼來完成此操作? 我試過,但得到了一個錯誤,同時運行

「無法投類型的對象System.Windows.Forms.NumericUpDown爲鍵入 'System.IConvertible'。

int UpDownNum; 
    int NumBank; 
    int TV = 0 
    private void UpDown1_MouseUp(object sender, MouseEventArgs e) 
    { 
     UpDownNum = (Convert.ToInt32(UpDown1)); 
     NumBank = (Convert.ToInt32(NumTextbox.Text)); 

     TV = NumBank - UpDownNum; 
     NumTextbox.Text = (Convert.ToString(TV)); 

上午我做了錯誤的事件?或者是否有其他問題?

+0

你需要看看'UpDown1.Value'屬性 - 目前你正試圖控制自己轉換爲數字。所以你的行變成'UpDownNum = Convert.ToInt32(UpDown1.Value);' – dash 2012-07-14 22:30:55

回答

0

異常是由於控制NumericUpdown控件爲一個整數引起的,這是行不通的,你需要使用NumericUpdown.Value屬性。

我認爲它是ValueChanged事件,你正在尋找:

private decimal oldValue = 0; 

private void numericUpDown1_ValueChanged(object sender, EventArgs e) 
{ 
    NumericUpDown UpDown1 = (NumericUpDown)sender; 
    decimal diff = UpDown1.Value - oldValue; 
    oldValue = UpDown1.Value; 
    int numBank = int.Parse(NumTextBox.Text); 
    decimal newValue = numBank + diff; 
    NumTextBox.Text = newValue.ToString(); 
} 

編輯

我知道拿到老的新值之間的差異的唯一方法NumericUpDown值是手動保存舊值(例如,在成員變量中)並在計算差異後(請參閱上面編輯的代碼)在ValueChanged中更改它。

+0

在行int newValue = numBank - updown1.Value'我得到錯誤「不能隱式轉換類型'十進制'爲'int'。轉換存在(你是否缺少演員?)「 – 2012-07-14 22:55:20

+0

@JoeFredy:抱歉,應該測試它。認真地編輯我的答案。 – 2012-07-14 23:00:39

+0

@JoeFredy根據[documentation](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.numericupdown.value.aspx),NumericUpdown.Value是一個小數。 – Bridge 2012-07-14 23:01:06

0

您桅杆趕上NumericUpDown.ValueChanged事件,並獲得NumericUpDown.Value屬性:

private void NumericUpDown1ValueChanged(object sender, EventArgs e) 
{ 
    var num = ((NumericUpDown) sender).Value; 
    newTextBox.Text = num.ToString(); 
}