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 に答える