[Tips][NumericUpDown] 値を取得する

スポンサーリンク

NumericUpDownコントロールで現在表示されている値を取得するにはValueプロパティ(Decimal型)を参照します。

下記は[値を取得]ボタンがクリックされたときに現在値を表示する例です。

VBの例

'現在値を取得
Dim value As Integer = NumericUpDown1.Value

MessageBox.Show("現在値:" & value.ToString())

C#の例

// 現在値を取得
int value = (int)NumericUpDown1.Value;

MessageBox.Show("現在値:" + value.ToString());

コメント

  1.   より:

    tablelayoutpanelにnumericupdownコントロールをControls.Add()で動的に追加したあと、GetControlFromPosition()でこのコントロールで取得したとき、なぜかValueプロパティが参照できないんですが、原因をご存じないですか?

    •   より:

      すみません、自己解決しました。ValueではなくTextを参照することで値を取得できました。なぜそのような挙動になるのかさっぱりわかりませんが…

    • HIRO より:

      コードをみていないので推測になりいますが、GetControlFromPosition()の戻り値を NumericUpDown 型にキャストしていないのではないでしょうか?
      GetControlFromPosition の戻り値の型は Control 型です。NumericUpDown 型ではないので Value を参照することはできません。
      ちなみに、Control 型は Text プロパティを持っています。
      例)

      Control ctrl = tablelayoutpanel.GetControlFromPosition(i, j);
      
      decima d1 = ctrl.value; // ← Ctrl は NumeicUpDown ではないため Value は参照できない
      decimal d2 = ((NumericUpDown)ctrl).Value  // ctrl を NumericUpDown にキャストして Value を参照
      
      •   より:

        あー、なるほど!
        めちゃくちゃすっきりしました。ありがとうございます。そもそもControl型にはValueがないから参照しようがないということですね。他のコントロールはキャストしなくてもいい感じに動いてくれていたので、うっかり型のことを忘れていました…

タイトルとURLをコピーしました