[Tips][NumericUpDown] まとめ

これまでに紹介した「NumericUpDownコントロール」Tipsは下記の通りです。

  1. 最小値と最大値を設定する
  2. 値を取得する
  3. 値の増分/減分量を変更する
  4. 小数点を表示する
  5. 3桁ごとに区切り記号表示する
  6. 16進数で表示する
  7. [PageDown][PageUp]キーで値を変化させる
  8. スピンボタンの配置位置を左側にする
  9. コードから値を増減させる

[Tips][NumericUpDown] コードから値を増減させる

通常NumericUpDownコントロールはスピンボタンで値を増減させますが、コードから値を増減させることも可能です。

UpButtonメソッドを実行すると値を増分し、DownButtonメソッドを実行すると値を減分します。

下記は、コードから値を増減させる例です。

VBの例

' [↑]ボタンクリック時の処理
Private Sub btnUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUp.Click
    '値を増分する
    NumericUpDown1.UpButton()
End Sub

' [↓]ボタンクリック時の処理
Private Sub btnDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDown.Click
    '値を減分する
    NumericUpDown1.DownButton()
End Sub

C#の例

// [↑]ボタンクリック時の処理
private void btnUp_Click(object sender, EventArgs e)
{
    // 値を増分する
    numericUpDown1.UpButton();
}

// [↓]ボタンクリック時の処理
private void btnDown_Click(object sender, EventArgs e)
{
    // 値を減分する
    numericUpDown1.DownButton();
}

[Tips][NumericUpDown] スピンボタンの配置位置を左側にする

既定ではNumericUpDownのスピンボタンは右側に配置されています。

スピンボタンを左側に配置する場合はUpDownAlignプロパティLeftRightAlignment.Leftを設定します。

下記はスピンボタンを左側に配置する例です。

VBの例

'スピンボタンの配置位置を左側にする
NumericUpDown1.UpDownAlign = LeftRightAlignment.Left

C#の例

// スピンボタンの配置位置を左側にする
numericUpDown1.UpDownAlign = LeftRightAlignment.Left;

[Tips][NumericUpDown] [PageDown][PageUp]キーで値を変化させる

[PageUp][PageDown]キーで値の増減を行うには、NumeriUpDownのKeyDownイベントを利用します。

[PageUp]が押されたとき、[PageDown]が押されたときをそれぞれ判断するとともに、Minimum値/Maximum値の範囲外にならないことを確認して値を増減させます。

VBの例

Private Sub NumericUpDown1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles NumericUpDown1.KeyDown
    If e.KeyCode = Keys.PageDown And
        NumericUpDown1.Value >= NumericUpDown1.Minimum + STEP_VALUE Then    '[PageDown]押下時

        NumericUpDown1.Value -= STEP_VALUE

    ElseIf e.KeyCode = Keys.PageUp And
        NumericUpDown1.Value <= NumericUpDown1.Maximum - STEP_VALUE Then    '[PageUp]押下時

        NumericUpDown1.Value += STEP_VALUE
    End If
End Sub

C#の例

private void NumericUpDown1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.PageDown &&
        numericUpDown1.Value >= numericUpDown1.Minimum + STEP_VALUE)	//[PageDown]押下時

        numericUpDown1.Value -= STEP_VALUE;

    else if (e.KeyCode == Keys.PageUp &&
        numericUpDown1.Value <= numericUpDown1.Maximum - STEP_VALUE)	//[PageUp]押下時

        numericUpDown1.Value += STEP_VALUE;
}

[Tips][NumericUpDown] 16進数で表示する

既定ではNumericUpDownコントロールは10進数表記となっています。

16進数表記にしたい場合はHexadecimalプロパティにTrueを設定します。

VBの例

' [16進数表記]チェックボックスのチェック状態変更時
Private Sub chkHex_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkHex.CheckedChanged
    '16進数表記のOn/Off切り替え
    NumericUpDown1.Hexadecimal = Not NumericUpDown1.Hexadecimal
End Sub

C#の例

// [16進数表記]チェックボックスのチェック状態変更時
private void chkHex_CheckedChanged(object sender, EventArgs e)
{
    //16進数表記のOn/Off切り替え
    numericUpDown1.Hexadecimal = !numericUpDown1.Hexadecimal;
}