C#でWindowsフォームアプリケーションを開発する際、数値のみを入力させたいケースがよくあります。多くの開発者が「TextBox.Numeric」プロパティを探すかもしれませんが、実はC#の標準TextBoxコントロールにはそのようなプロパティは存在しません。しかし、心配する必要はありません。この記事では、TextBoxで数値入力を制限する方法と、数値入力に特化したNumericUpDownコントロールの使用方法を解説します。
目次
TextBoxで数値入力を制限する方法
標準のTextBoxコントロールには「Numeric」プロパティはありませんが、KeyPressイベントを使用して数値のみの入力を制限することができます。以下に、その実装方法を示します。
using System;
using System.Windows.Forms;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
textBox1.KeyPress += TextBox1_KeyPress;
}
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// 数字とバックスペース以外の入力を無効化
if (!char.IsDigit(e.KeyChar) && e.KeyChar != 8)
{
e.Handled = true;
}
}
}
このコードでは、以下のポイントに注目してください:
- TextBoxのKeyPressイベントにイベントハンドラを追加します。
char.IsDigit()
メソッドを使用して、入力が数字かどうかをチェックします。- バックスペースキー(ASCIIコード8)も許可して、ユーザーが入力を修正できるようにします。
- 数字とバックスペース以外の入力は、
e.Handled = true;
でキャンセルします。
NumericUpDownコントロールの使用
数値入力に特化したコントロールが必要な場合、NumericUpDownコントロールを使用するのが最適です。このコントロールは、数値のみの入力を許可し、上下矢印ボタンで値を増減させることができます。
using System;
using System.Windows.Forms;
public partial class Form1 : Form
{
private NumericUpDown numericUpDown1;
public Form1()
{
InitializeComponent();
numericUpDown1 = new NumericUpDown();
numericUpDown1.Location = new System.Drawing.Point(10, 10);
numericUpDown1.Size = new System.Drawing.Size(120, 20);
numericUpDown1.Minimum = 0;
numericUpDown1.Maximum = 100;
numericUpDown1.DecimalPlaces = 2; // 小数点以下2桁まで許可
numericUpDown1.Increment = 0.1m; // 増減値を0.1に設定
this.Controls.Add(numericUpDown1);
}
}
NumericUpDownコントロールの主な特徴は以下の通りです:
Minimum
とMaximum
プロパティで入力可能な値の範囲を設定できます。DecimalPlaces
プロパティで小数点以下の桁数を指定できます。Increment
プロパティで上下矢印ボタンでの増減量を設定できます。
まとめ
C#の標準TextBoxには「Numeric」プロパティはありませんが、KeyPressイベントを使用することで数値入力を制限できます。より高度な数値入力機能が必要な場合は、NumericUpDownコントロールが最適な選択肢となります。
これらの方法を使用することで、ユーザーからの数値入力を効果的に制御し、入力エラーを防ぐことができます。数値を扱うアプリケーション、例えば計算機能やデータ入力フォームなどで、これらの技術を活用することで、より使いやすく信頼性の高いアプリケーションを開発することができるでしょう。
コメント