[C#] NumericUpDownコントロールから値を取得する方法

C#でNumericUpDownコントロールから値を取得するには、コントロールのValueプロパティを使用します。

このプロパティはdecimal型で、現在の数値を返します。

例えば、numericUpDown1という名前のNumericUpDownコントロールから値を取得する場合、decimal currentValue = numericUpDown1.Value;のように記述します。

この値は、必要に応じて他の数値型にキャストすることも可能です。

Valueプロパティは、ユーザーがコントロールを操作して選択した数値をプログラム内で利用する際に便利です。

この記事でわかること
  • NumericUpDownコントロールの基本的な使い方
  • 値の取得方法と型変換の手法
  • イベントを利用したリアルタイム処理
  • 複数のコントロールの連携方法
  • データベースとの接続方法と活用法

目次から探す

NumericUpDownコントロールから値を取得する方法

Valueプロパティを使用した値の取得

NumericUpDownコントロールの値を取得する最も基本的な方法は、Valueプロパティを使用することです。

このプロパティは、NumericUpDownコントロールに設定された現在の値を取得します。

以下は、Valueプロパティを使用して値を取得するサンプルコードです。

partial class MyForm : Form
{
    private NumericUpDown numericUpDown1;
    public MyForm()
    {
        InitializeComponent();
        numericUpDown1 = new NumericUpDown();
        numericUpDown1.Location = new Point(10, 10);
        this.Controls.Add(numericUpDown1);
    }
    private void GetValue()
    {
        // NumericUpDownの値を取得
        decimal currentValue = numericUpDown1.Value;
        // 取得した値を表示
        MessageBox.Show($"現在の値: {currentValue}");
    }
}

このコードを実行すると、NumericUpDownコントロールに設定された値がメッセージボックスに表示されます。

値の型変換

NumericUpDownコントロールのValueプロパティはdecimal型で返されますが、他の型に変換する必要がある場合があります。

例えば、整数型に変換する場合は、Convert.ToInt32メソッドを使用します。

以下はその例です。

private void ConvertValue()
{
    // NumericUpDownの値を整数に変換
    int intValue = Convert.ToInt32(numericUpDown1.Value);
    // 変換した値を表示
    MessageBox.Show($"整数値: {intValue}");
}

このコードを実行すると、NumericUpDownの値が整数に変換されて表示されます。

イベントを利用した値の取得

NumericUpDownコントロールの値が変更されたときに自動的に値を取得するには、ValueChangedイベントを利用します。

このイベントは、ユーザーが値を変更したときに発生します。

以下は、ValueChangedイベントを使用したサンプルコードです。

public MyForm()
{
    InitializeComponent();
    numericUpDown1 = new NumericUpDown();
    numericUpDown1.Location = new Point(10, 10);
    numericUpDown1.ValueChanged += new EventHandler(NumericUpDown1_ValueChanged);
    this.Controls.Add(numericUpDown1);
}
private void NumericUpDown1_ValueChanged(object sender, EventArgs e)
{
    // 値が変更されたときに取得
    decimal newValue = numericUpDown1.Value;
    // 新しい値を表示
    MessageBox.Show($"新しい値: {newValue}");
}

このコードを実行すると、NumericUpDownの値が変更されるたびに新しい値がメッセージボックスに表示されます。

実装例

基本的な値の取得例

NumericUpDownコントロールから値を取得する基本的な方法を示します。

この例では、ボタンをクリックしたときにNumericUpDownの値を取得し、メッセージボックスに表示します。

partial class MyForm : Form
{
    private NumericUpDown numericUpDown1;
    private Button buttonGetValue;
    public MyForm()
    {
        InitializeComponent();
        numericUpDown1 = new NumericUpDown();
        numericUpDown1.Location = new Point(10, 10);
        this.Controls.Add(numericUpDown1);
        buttonGetValue = new Button();
        buttonGetValue.Text = "値を取得";
        buttonGetValue.Location = new Point(10, 40);
        buttonGetValue.Click += new EventHandler(ButtonGetValue_Click);
        this.Controls.Add(buttonGetValue);
    }
    private void ButtonGetValue_Click(object sender, EventArgs e)
    {
        // NumericUpDownの値を取得
        decimal currentValue = numericUpDown1.Value;
        // 取得した値を表示
        MessageBox.Show($"現在の値: {currentValue}");
    }
}

このコードを実行し、「値を取得」ボタンをクリックすると、NumericUpDownの現在の値が表示されます。

値の変更に応じた処理の実装

NumericUpDownの値が変更されたときに特定の処理を実行する例です。

この例では、値が変更されるたびにその値をラベルに表示します。

private Label labelValue;
public MyForm()
{
    InitializeComponent();
    numericUpDown1 = new NumericUpDown();
    numericUpDown1.Location = new Point(10, 10);
    numericUpDown1.ValueChanged += new EventHandler(NumericUpDown1_ValueChanged);
    this.Controls.Add(numericUpDown1);
    labelValue = new Label();
    labelValue.Location = new Point(10, 40);
    this.Controls.Add(labelValue);
}
private void NumericUpDown1_ValueChanged(object sender, EventArgs e)
{
    // 値が変更されたときに取得
    decimal newValue = numericUpDown1.Value;
    // ラベルに新しい値を表示
    labelValue.Text = $"新しい値: {newValue}";
}

このコードを実行すると、NumericUpDownの値が変更されるたびにラベルに新しい値が表示されます。

複数のNumericUpDownコントロールの値を取得

複数のNumericUpDownコントロールから値を取得する例です。

この例では、2つのNumericUpDownコントロールの値を合計し、ボタンをクリックしたときに表示します。

private NumericUpDown numericUpDown2;
private Button buttonCalculate;
public MyForm()
{
    InitializeComponent();
    numericUpDown1 = new NumericUpDown();
    numericUpDown1.Location = new Point(10, 10);
    this.Controls.Add(numericUpDown1);
    numericUpDown2 = new NumericUpDown();
    numericUpDown2.Location = new Point(10, 40);
    this.Controls.Add(numericUpDown2);
    buttonCalculate = new Button();
    buttonCalculate.Text = "合計を計算";
    buttonCalculate.Location = new Point(10, 70);
    buttonCalculate.Click += new EventHandler(ButtonCalculate_Click);
    this.Controls.Add(buttonCalculate);
}
private void ButtonCalculate_Click(object sender, EventArgs e)
{
    // 2つのNumericUpDownの値を取得
    decimal value1 = numericUpDown1.Value;
    decimal value2 = numericUpDown2.Value;
    // 合計を計算
    decimal total = value1 + value2;
    // 合計を表示
    MessageBox.Show($"合計: {total}");
}

このコードを実行し、2つのNumericUpDownに値を入力して「合計を計算」ボタンをクリックすると、合計がメッセージボックスに表示されます。

応用例

計算機能への応用

NumericUpDownコントロールを使用して簡単な計算機能を実装することができます。

この例では、2つのNumericUpDownコントロールを使って、加算、減算、乗算、除算の計算を行います。

ユーザーが選択した演算に基づいて結果を表示します。

private ComboBox comboBoxOperation;
private Button buttonCalculate;
public MyForm()
{
    InitializeComponent();
    numericUpDown1 = new NumericUpDown();
    numericUpDown1.Location = new Point(10, 10);
    this.Controls.Add(numericUpDown1);
    numericUpDown2 = new NumericUpDown();
    numericUpDown2.Location = new Point(10, 40);
    this.Controls.Add(numericUpDown2);
    comboBoxOperation = new ComboBox();
    comboBoxOperation.Items.AddRange(new string[] { "加算", "減算", "乗算", "除算" });
    comboBoxOperation.Location = new Point(10, 70);
    this.Controls.Add(comboBoxOperation);
    buttonCalculate = new Button();
    buttonCalculate.Text = "計算";
    buttonCalculate.Location = new Point(10, 100);
    buttonCalculate.Click += new EventHandler(ButtonCalculate_Click);
    this.Controls.Add(buttonCalculate);
}
private void ButtonCalculate_Click(object sender, EventArgs e)
{
    decimal value1 = numericUpDown1.Value;
    decimal value2 = numericUpDown2.Value;
    decimal result = 0;
    switch (comboBoxOperation.SelectedItem.ToString())
    {
        case "加算":
            result = value1 + value2;
            break;
        case "減算":
            result = value1 - value2;
            break;
        case "乗算":
            result = value1 * value2;
            break;
        case "除算":
            if (value2 != 0)
            {
                result = value1 / value2;
            }
            else
            {
                MessageBox.Show("ゼロで割ることはできません。");
                return;
            }
            break;
    }
    MessageBox.Show($"結果: {result}");
}

このコードを実行すると、ユーザーが選択した演算に基づいて計算結果が表示されます。

フォーム入力のバリデーション

NumericUpDownコントロールを使用して、ユーザーの入力をバリデーションすることができます。

例えば、特定の範囲内の値のみを受け入れるように設定し、範囲外の値が入力された場合に警告を表示します。

public MyForm()
{
    InitializeComponent();
    numericUpDown1 = new NumericUpDown();
    numericUpDown1.Location = new Point(10, 10);
    numericUpDown1.Minimum = 1; // 最小値
    numericUpDown1.Maximum = 100; // 最大値
    this.Controls.Add(numericUpDown1);
    buttonValidate = new Button();
    buttonValidate.Text = "バリデーション";
    buttonValidate.Location = new Point(10, 40);
    buttonValidate.Click += new EventHandler(ButtonValidate_Click);
    this.Controls.Add(buttonValidate);
}
private void ButtonValidate_Click(object sender, EventArgs e)
{
    if (numericUpDown1.Value < numericUpDown1.Minimum || numericUpDown1.Value > numericUpDown1.Maximum)
    {
        MessageBox.Show($"値は{numericUpDown1.Minimum}から{numericUpDown1.Maximum}の範囲内でなければなりません。");
    }
    else
    {
        MessageBox.Show("入力値は有効です。");
    }
}

このコードを実行し、範囲外の値を入力して「バリデーション」ボタンをクリックすると、警告メッセージが表示されます。

データベースとの連携

NumericUpDownコントロールを使用して、データベースに値を保存する機能を実装することも可能です。

この例では、NumericUpDownの値をデータベースに保存する方法を示します。

以下のコードは、SQLiteデータベースに接続して値を保存する例です。

using System.Data.SQLite;
private void SaveToDatabase(decimal value)
{
    using (SQLiteConnection connection = new SQLiteConnection("Data Source=mydatabase.db;Version=3;"))
    {
        connection.Open();
        string sql = "INSERT INTO MyTable (Value) VALUES (@value)";
        using (SQLiteCommand command = new SQLiteCommand(sql, connection))
        {
            command.Parameters.AddWithValue("@value", value);
            command.ExecuteNonQuery();
        }
    }
}
private void ButtonSave_Click(object sender, EventArgs e)
{
    decimal valueToSave = numericUpDown1.Value;
    SaveToDatabase(valueToSave);
    MessageBox.Show("値がデータベースに保存されました。");
}

このコードを実行し、「保存」ボタンをクリックすると、NumericUpDownの値がSQLiteデータベースに保存されます。

データベースの設定やテーブルの作成は事前に行っておく必要があります。

よくある質問

NumericUpDownの値を整数として取得するには?

NumericUpDownコントロールのValueプロパティはdecimal型で返されますが、整数として取得するには型変換を行います。

以下の方法で整数に変換できます。

例:int intValue = Convert.ToInt32(numericUpDown1.Value);

このコードを使用することで、NumericUpDownの値を整数として取得できます。

値の範囲を動的に変更するには?

NumericUpDownコントロールのMinimumおよびMaximumプロパティを使用して、値の範囲を動的に変更できます。

これらのプロパティに新しい値を設定することで、ユーザーが入力できる範囲を変更できます。

例えば、以下のように設定します。

numericUpDown1.Minimum = 10; // 最小値を10に設定
numericUpDown1.Maximum = 50; // 最大値を50に設定

このコードを実行すると、NumericUpDownの値の範囲が動的に変更されます。

値の変更をリアルタイムで検知する方法は?

NumericUpDownコントロールのValueChangedイベントを利用することで、値の変更をリアルタイムで検知できます。

このイベントは、ユーザーが値を変更したときに自動的に発生します。

以下のようにイベントハンドラを設定します。

numericUpDown1.ValueChanged += new EventHandler(NumericUpDown1_ValueChanged);
private void NumericUpDown1_ValueChanged(object sender, EventArgs e)
{
    decimal newValue = numericUpDown1.Value;
    // 新しい値に基づく処理をここに記述
}

このコードを実行すると、NumericUpDownの値が変更されるたびに指定した処理が実行されます。

まとめ

この記事では、C#のNumericUpDownコントロールから値を取得する方法やその応用例について詳しく解説しました。

基本的な値の取得から、イベントを利用したリアルタイムの値の検知、さらにはデータベースとの連携に至るまで、さまざまな実装方法を紹介しました。

これを機に、NumericUpDownコントロールを活用して、よりインタラクティブで使いやすいアプリケーションを作成してみてください。

  • URLをコピーしました!
目次から探す