[C#] TextBoxに入力された値(文字列)を取得する方法
C#でTextBoxに入力された値を取得するには、TextBoxコントロールのText
プロパティを使用します。
例えば、Windows FormsアプリケーションでTextBoxの名前がtextBox1
の場合、textBox1.Text
を使ってユーザーが入力した文字列を取得できます。
このプロパティはstring型
を返し、ユーザーがTextBoxに入力した内容をそのまま取得することが可能です。
取得した文字列は、他の変数に代入したり、表示したり、データベースに保存したりといった操作に利用できます。
TextBoxから文字列を取得する方法
Textプロパティの利用
C#のWindowsフォームアプリケーションにおいて、TextBoxコントロールに入力された文字列を取得するためには、Textプロパティを使用します。
Textプロパティは、TextBoxに表示されているテキストを取得または設定するためのプロパティです。
以下は、TextBoxから文字列を取得する基本的なサンプルコードです。
partial class MyForm : Form
{
private TextBox myTextBox;
public MyForm()
{
InitializeComponent();
myTextBox = new TextBox();
myTextBox.Location = new Point(10, 10);
this.Controls.Add(myTextBox);
}
private void GetTextBoxValue()
{
// TextBoxから文字列を取得
string inputValue = myTextBox.Text;
}
}
このコードでは、myTextBox
というTextBoxを作成し、GetTextBoxValueメソッド
内でそのTextプロパティを使用して文字列を取得しています。
取得した文字列の変数への代入
TextBoxから取得した文字列は、任意の変数に代入することができます。
これにより、後でその値を利用したり、処理を行ったりすることが可能です。
以下のサンプルコードでは、取得した文字列をinputValue
という変数に代入しています。
partial class MyForm : Form
{
private TextBox myTextBox;
public MyForm()
{
InitializeComponent();
myTextBox = new TextBox();
myTextBox.Location = new Point(10, 10);
this.Controls.Add(myTextBox);
}
private void GetTextBoxValue()
{
// TextBoxから文字列を取得
string inputValue = myTextBox.Text;
// 取得した文字列を使用する処理
MessageBox.Show("入力された値: " + inputValue);
}
}
この例では、取得した文字列をメッセージボックスで表示しています。
MessageBox.Showメソッド
を使用して、ユーザーに入力された値を確認させることができます。
文字列の表示とデバッグ
取得した文字列をデバッグするためには、コンソールに出力したり、メッセージボックスを使用したりすることが一般的です。
以下のサンプルコードでは、デバッグ用にコンソールに出力する方法を示します。
partial class MyForm : Form
{
private TextBox myTextBox;
public MyForm()
{
InitializeComponent();
myTextBox = new TextBox();
myTextBox.Location = new Point(10, 10);
this.Controls.Add(myTextBox);
}
private void GetTextBoxValue()
{
// TextBoxから文字列を取得
string inputValue = myTextBox.Text;
// デバッグ用にコンソールに出力
Console.WriteLine("入力された値: " + inputValue);
}
}
このコードでは、Console.WriteLineメソッド
を使用して、取得した文字列をコンソールに出力しています。
これにより、プログラムの実行中に入力された値を確認することができます。
文字列の操作と活用
文字列の検証と変換
C#では、TextBoxから取得した文字列を検証し、必要に応じて変換することが重要です。
例えば、ユーザーが入力した値が数値であるかどうかを確認する場合、int.TryParseメソッド
を使用して検証できます。
以下のサンプルコードでは、TextBoxから取得した文字列が整数に変換可能かどうかをチェックしています。
partial class MyForm : Form
{
private TextBox myTextBox;
public MyForm()
{
InitializeComponent();
myTextBox = new TextBox();
myTextBox.Location = new Point(10, 10);
this.Controls.Add(myTextBox);
}
private void ValidateAndConvert()
{
// TextBoxから文字列を取得
string inputValue = myTextBox.Text;
// 整数に変換可能か検証
if (int.TryParse(inputValue, out int result))
{
MessageBox.Show("入力された値は整数です: " + result);
}
else
{
MessageBox.Show("入力された値は整数ではありません。");
}
}
}
このコードでは、int.TryParse
を使用して、入力された値が整数に変換できるかどうかを確認しています。
変換できた場合は、その値を表示し、できなかった場合はエラーメッセージを表示します。
文字列のフォーマットと整形
文字列をフォーマットすることで、表示を整えることができます。
C#では、string.Formatメソッド
や文字列補間を使用して、文字列を整形することが可能です。
以下のサンプルコードでは、文字列補間を使用して、ユーザーの名前と年齢を表示しています。
partial class MyForm : Form
{
private TextBox nameTextBox;
private TextBox ageTextBox;
public MyForm()
{
InitializeComponent();
nameTextBox = new TextBox { Location = new Point(10, 10) };
ageTextBox = new TextBox { Location = new Point(10, 40) };
this.Controls.Add(nameTextBox);
this.Controls.Add(ageTextBox);
}
private void FormatString()
{
// TextBoxから文字列を取得
string name = nameTextBox.Text;
string age = ageTextBox.Text;
// フォーマットされた文字列を作成
string message = $"名前: {name}, 年齢: {age}";
MessageBox.Show(message);
}
}
この例では、文字列補間を使用して、name
とage
の値を組み合わせたメッセージを作成し、メッセージボックスで表示しています。
文字列の保存とデータベース連携
TextBoxから取得した文字列を保存する方法として、ファイルへの保存やデータベースへの登録があります。
以下のサンプルコードでは、SQLiteデータベースに文字列を保存する方法を示します。
using System.Data.SQLite;
partial class MyForm : Form
{
private TextBox myTextBox;
private SQLiteConnection connection;
public MyForm()
{
InitializeComponent();
myTextBox = new TextBox();
myTextBox.Location = new Point(10, 10);
this.Controls.Add(myTextBox);
// SQLiteデータベースへの接続
connection = new SQLiteConnection("Data Source=mydatabase.db;Version=3;");
connection.Open();
}
private void SaveToDatabase()
{
// TextBoxから文字列を取得
string inputValue = myTextBox.Text;
// データベースに文字列を保存
using (var command = new SQLiteCommand("INSERT INTO MyTable (MyColumn) VALUES (@value)", connection))
{
command.Parameters.AddWithValue("@value", inputValue);
command.ExecuteNonQuery();
}
MessageBox.Show("データが保存されました。");
}
}
このコードでは、SQLiteデータベースに接続し、TextBoxから取得した文字列をMyTable
というテーブルに保存しています。
INSERT
文を使用して、取得した値をデータベースに追加しています。
エラーハンドリングと例外処理
入力エラーの検出
ユーザーがTextBoxに不正な値を入力した場合、エラーを検出することが重要です。
例えば、数値を期待している場合に文字列が入力された場合などです。
以下のサンプルコードでは、TextBoxから取得した値が数値であるかどうかを検証し、エラーを検出しています。
partial class MyForm : Form
{
private TextBox myTextBox;
public MyForm()
{
InitializeComponent();
myTextBox = new TextBox();
myTextBox.Location = new Point(10, 10);
this.Controls.Add(myTextBox);
}
private void ValidateInput()
{
// TextBoxから文字列を取得
string inputValue = myTextBox.Text;
// 整数に変換可能か検証
if (!int.TryParse(inputValue, out _))
{
MessageBox.Show("エラー: 数値を入力してください。");
}
}
}
このコードでは、int.TryParse
を使用して、入力された値が整数に変換できるかどうかを確認しています。
変換できない場合は、エラーメッセージを表示します。
例外処理の基本
C#では、例外処理を行うためにtry-catch
ブロックを使用します。
これにより、プログラムの実行中に発生する可能性のあるエラーを捕捉し、適切に処理することができます。
以下のサンプルコードでは、例外処理を使用して、データベースへの保存処理中にエラーが発生した場合の対処を示しています。
using System.Data.SQLite;
partial class MyForm : Form
{
private TextBox myTextBox;
private SQLiteConnection connection;
public MyForm()
{
InitializeComponent();
myTextBox = new TextBox();
myTextBox.Location = new Point(10, 10);
this.Controls.Add(myTextBox);
// SQLiteデータベースへの接続
connection = new SQLiteConnection("Data Source=mydatabase.db;Version=3;");
connection.Open();
}
private void SaveToDatabase()
{
// TextBoxから文字列を取得
string inputValue = myTextBox.Text;
try
{
// データベースに文字列を保存
using (var command = new SQLiteCommand("INSERT INTO MyTable (MyColumn) VALUES (@value)", connection))
{
command.Parameters.AddWithValue("@value", inputValue);
command.ExecuteNonQuery();
}
MessageBox.Show("データが保存されました。");
}
catch (Exception ex)
{
MessageBox.Show("エラーが発生しました: " + ex.Message);
}
}
}
このコードでは、データベースへの保存処理をtry
ブロック内で行い、エラーが発生した場合はcatch
ブロックでそのエラーメッセージを表示しています。
これにより、プログラムがクラッシュすることを防ぎ、ユーザーにエラーの内容を伝えることができます。
ユーザーへのフィードバック
エラーハンドリングの一環として、ユーザーに対して適切なフィードバックを提供することが重要です。
エラーが発生した場合や、入力が不正な場合には、メッセージボックスやラベルを使用してユーザーに情報を伝えます。
以下のサンプルコードでは、入力エラーが発生した場合にメッセージボックスでフィードバックを行っています。
partial class MyForm : Form
{
private TextBox myTextBox;
public MyForm()
{
InitializeComponent();
myTextBox = new TextBox();
myTextBox.Location = new Point(10, 10);
this.Controls.Add(myTextBox);
}
private void ValidateInput()
{
// TextBoxから文字列を取得
string inputValue = myTextBox.Text;
// 整数に変換可能か検証
if (!int.TryParse(inputValue, out _))
{
// ユーザーへのフィードバック
MessageBox.Show("エラー: 数値を入力してください。", "入力エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show("入力が正しいです。", "確認", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
このコードでは、入力が不正な場合にエラーメッセージを表示し、正しい場合には確認メッセージを表示しています。
これにより、ユーザーは自分の入力が正しいかどうかを確認することができます。
応用例
複数のTextBoxからのデータ取得
複数のTextBoxからデータを取得することで、ユーザーからの情報を一度に収集することができます。
以下のサンプルコードでは、名前と年齢を入力するための2つのTextBoxを作成し、それぞれの値を取得して表示しています。
partial class MyForm : Form
{
private TextBox nameTextBox;
private TextBox ageTextBox;
public MyForm()
{
InitializeComponent();
nameTextBox = new TextBox { Location = new Point(10, 10) };
ageTextBox = new TextBox { Location = new Point(10, 40) };
this.Controls.Add(nameTextBox);
this.Controls.Add(ageTextBox);
}
private void GetMultipleTextBoxValues()
{
// TextBoxから文字列を取得
string name = nameTextBox.Text;
string age = ageTextBox.Text;
// 取得した値を表示
MessageBox.Show($"名前: {name}, 年齢: {age}");
}
}
このコードでは、nameTextBox
とageTextBox
からそれぞれの値を取得し、メッセージボックスで表示しています。
これにより、複数の情報を一度に処理することができます。
TextBoxの入力制限とバリデーション
TextBoxに対して入力制限を設けることで、ユーザーが不正なデータを入力するのを防ぐことができます。
以下のサンプルコードでは、年齢を入力するTextBoxに対して、数値のみを受け付けるように制限を設けています。
partial class MyForm : Form
{
private TextBox ageTextBox;
public MyForm()
{
InitializeComponent();
ageTextBox = new TextBox { Location = new Point(10, 10) };
ageTextBox.KeyPress += AgeTextBox_KeyPress; // イベントハンドラを追加
this.Controls.Add(ageTextBox);
}
private void AgeTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
// 数値以外の入力を無効にする
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true; // 入力を無効にする
}
}
}
このコードでは、KeyPress
イベントを使用して、TextBoxに数値以外の文字が入力されるのを防いでいます。
これにより、ユーザーが不正なデータを入力することを防ぎます。
TextBoxを用いた簡易検索機能の実装
TextBoxを使用して簡易検索機能を実装することも可能です。
以下のサンプルコードでは、TextBoxに入力された文字列を基に、リスト内のアイテムを検索し、結果を表示します。
partial class MyForm : Form
{
private TextBox searchTextBox;
private ListBox resultsListBox;
private List<string> items;
public MyForm()
{
InitializeComponent();
searchTextBox = new TextBox { Location = new Point(10, 10) };
resultsListBox = new ListBox { Location = new Point(10, 40), Width = 200 };
this.Controls.Add(searchTextBox);
this.Controls.Add(resultsListBox);
// サンプルデータの作成
items = new List<string> { "Apple", "Banana", "Cherry", "Date", "Fig", "Grape" };
// TextBoxのTextChangedイベントにハンドラを追加
searchTextBox.TextChanged += SearchTextBox_TextChanged;
}
private void SearchTextBox_TextChanged(object sender, EventArgs e)
{
// 検索結果をリストボックスに表示
string searchTerm = searchTextBox.Text.ToLower();
resultsListBox.Items.Clear(); // 以前の結果をクリア
foreach (var item in items)
{
if (item.ToLower().Contains(searchTerm))
{
resultsListBox.Items.Add(item); // 一致するアイテムを追加
}
}
}
}
このコードでは、searchTextBox
に入力された文字列を基に、items
リスト内のアイテムを検索し、一致するアイテムをresultsListBox
に表示しています。
TextChanged
イベントを使用して、ユーザーが入力するたびに検索結果を更新します。
これにより、リアルタイムでの検索機能を実現しています。
まとめ
この記事では、C#のWindowsフォームにおけるTextBoxの利用方法について詳しく解説しました。
具体的には、TextBoxからの文字列取得、文字列の操作、エラーハンドリング、そして応用例として複数のTextBoxのデータ取得や入力制限、簡易検索機能の実装方法を紹介しました。
これらの知識を活用することで、よりユーザーに優しいアプリケーションを作成することが可能になりますので、ぜひ実際のプロジェクトに取り入れてみてください。