[C#] NumericUpDownコントロールから値を取得する方法
C#でNumericUpDownコントロールから値を取得するには、コントロールのValue
プロパティを使用します。
このプロパティはdecimal型
で、現在の数値を返します。
例えば、numericUpDown1
という名前のNumericUpDownコントロールから値を取得する場合、decimal currentValue = numericUpDown1.Value;
のように記述します。
この値は、必要に応じて他の数値型にキャストすることも可能です。
Value
プロパティは、ユーザーがコントロールを操作して選択した数値をプログラム内で利用する際に便利です。
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データベースに保存されます。
データベースの設定やテーブルの作成は事前に行っておく必要があります。
まとめ
この記事では、C#のNumericUpDownコントロールから値を取得する方法やその応用例について詳しく解説しました。
基本的な値の取得から、イベントを利用したリアルタイムの値の検知、さらにはデータベースとの連携に至るまで、さまざまな実装方法を紹介しました。
これを機に、NumericUpDownコントロールを活用して、よりインタラクティブで使いやすいアプリケーションを作成してみてください。