0

我有一个NumericUpDown控件,我希望单独文本框中的值根据用户输入的输入(向上或向下)减少或增加

我用什么事件或代码来完成这个?我试过了,但运行时出错

“无法将‘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));

我在做错事吗?还是其他问题?

4

2 回答 2

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 中更改它(请参阅编辑的代码多于)。

于 2012-07-14T22:34:15.167 回答
0

你桅杆捕捉NumericUpDown.ValueChanged事件,并获得NumericUpDown.Value财产:

private void NumericUpDown1ValueChanged(object sender, EventArgs e)
{
    var num = ((NumericUpDown) sender).Value;
    newTextBox.Text = num.ToString();
}
于 2012-07-14T22:35:05.753 回答