[C#] TextBoxに入力された値(文字列)を取得する方法

C#でTextBoxに入力された値を取得するには、TextBoxコントロールのTextプロパティを使用します。

例えば、Windows FormsアプリケーションでTextBoxの名前がtextBox1の場合、textBox1.Textを使ってユーザーが入力した文字列を取得できます。

このプロパティはstring型を返し、ユーザーがTextBoxに入力した内容をそのまま取得することが可能です。

取得した文字列は、他の変数に代入したり、表示したり、データベースに保存したりといった操作に利用できます。

この記事でわかること
  • TextBoxから文字列を取得する方法
  • 文字列の検証と変換の手法
  • 複数の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);
    }
}

この例では、文字列補間を使用して、nameageの値を組み合わせたメッセージを作成し、メッセージボックスで表示しています。

文字列の保存とデータベース連携

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}");
    }
}

このコードでは、nameTextBoxageTextBoxからそれぞれの値を取得し、メッセージボックスで表示しています。

これにより、複数の情報を一度に処理することができます。

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イベントを使用して、ユーザーが入力するたびに検索結果を更新します。

これにより、リアルタイムでの検索機能を実現しています。

よくある質問

TextBoxの入力をリアルタイムで取得するには?

TextBoxの入力をリアルタイムで取得するには、TextChangedイベントを利用します。

このイベントは、TextBoxの内容が変更されるたびに発生します。

以下のように、TextChangedイベントにハンドラを追加することで、ユーザーが入力するたびにその内容を取得できます。

private void searchTextBox_TextChanged(object sender, EventArgs e)
{
    string currentText = searchTextBox.Text; // 現在の入力内容を取得
    // ここでcurrentTextを使用して処理を行う
}

この方法を使用することで、ユーザーがTextBoxに入力するたびに、最新の内容を取得して処理することが可能です。

TextBoxの入力を数値として扱うには?

TextBoxの入力を数値として扱うには、int.TryParsedouble.TryParseメソッドを使用して、文字列を数値に変換します。

以下の例では、TextBoxから取得した文字列を整数に変換し、成功した場合にその値を使用しています。

string inputValue = myTextBox.Text; // TextBoxから文字列を取得
if (int.TryParse(inputValue, out int number))
{
    // numberを使用して数値としての処理を行う
}
else
{
    MessageBox.Show("数値を入力してください。");
}

このようにすることで、ユーザーが入力した値を数値として安全に扱うことができます。

TextBoxの入力をクリアする方法は?

TextBoxの入力をクリアするには、Textプロパティに空の文字列を代入します。

以下のサンプルコードでは、ボタンをクリックしたときにTextBoxの内容をクリアする方法を示しています。

private void clearButton_Click(object sender, EventArgs e)
{
    myTextBox.Text = string.Empty; // TextBoxの内容をクリア
}

このコードを使用することで、ユーザーがボタンをクリックした際にTextBoxの入力内容を簡単にクリアすることができます。

まとめ

この記事では、C#のWindowsフォームにおけるTextBoxの利用方法について詳しく解説しました。

具体的には、TextBoxからの文字列取得、文字列の操作、エラーハンドリング、そして応用例として複数のTextBoxのデータ取得や入力制限、簡易検索機能の実装方法を紹介しました。

これらの知識を活用することで、よりユーザーに優しいアプリケーションを作成することが可能になりますので、ぜひ実際のプロジェクトに取り入れてみてください。

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