[C#] TextBoxから文字列を取得する方法

C#でTextBoxから文字列を取得するには、TextBoxコントロールのTextプロパティを使用します。

Windows Formsアプリケーションの場合、TextBoxコントロールをフォームに配置し、その名前が例えばtextBox1であるとします。

この場合、textBox1.Textを使用してTextBoxに入力された文字列を取得できます。

WPFアプリケーションでも同様に、TextBoxのTextプロパティを使用して文字列を取得します。

これにより、ユーザーがTextBoxに入力したデータをプログラム内で利用することが可能です。

この記事でわかること
  • TextBoxから文字列を取得する方法
  • 文字列の検証とエラーハンドリング
  • 複数のTextBoxからのデータ取得
  • 取得したデータのデータベース保存
  • 文字列のフォーマット変換方法

目次から探す

TextBoxから文字列を取得する方法

Textプロパティの利用

C#のWindowsフォームアプリケーションにおいて、TextBoxから文字列を取得する最も基本的な方法は、Textプロパティを利用することです。

Textプロパティは、TextBoxに入力されたテキストを取得するためのプロパティです。

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

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
    }
    private void buttonGetText_Click(object sender, EventArgs e)
    {
        // TextBoxから文字列を取得
        string inputText = textBoxInput.Text; 
        
        // 取得した文字列を表示
        MessageBox.Show(inputText); 
    }
}

このコードでは、ボタンがクリックされたときにTextBoxから文字列を取得し、メッセージボックスで表示します。

文字列取得のタイミング

文字列を取得するタイミングは、アプリケーションの要件によって異なります。

一般的なタイミングとしては、以下のようなイベントが考えられます。

スクロールできます
イベント名説明
ボタンクリックユーザーがボタンをクリックしたとき
フォーカスアウトTextBoxからフォーカスが外れたとき
キー入力特定のキーが押されたとき

これらのイベントに応じて、TextBoxから文字列を取得することができます。

例えば、ボタンクリックイベントで取得する場合は、前述のサンプルコードのように実装します。

取得した文字列の活用方法

取得した文字列は、さまざまな用途に活用できます。

以下は、一般的な活用方法の例です。

スクロールできます
活用方法説明
データの表示取得した文字列をラベルやメッセージボックスに表示する
データの保存取得した文字列をファイルやデータベースに保存する
入力値の検証取得した文字列をもとにユーザーの入力を検証する

例えば、取得した文字列をデータベースに保存する場合は、適切なデータベース接続を行い、SQL文を使用して保存処理を実装します。

実装例

簡単なフォームの作成

まず、C#のWindowsフォームアプリケーションを作成し、基本的なフォームを設計します。

以下の手順で簡単なフォームを作成します。

  1. Visual Studioを開き、新しいWindowsフォームアプリケーションプロジェクトを作成します。
  2. フォームにTextBox、Button、Labelを追加します。
  3. 各コントロールのプロパティを設定します。

以下は、簡単なフォームのサンプルコードです。

partial class MyForm : Form
{
    private TextBox textBoxInput;
    private Button buttonGetText;
    private Label labelOutput;
    public MyForm()
    {
        InitializeComponent();
        InitializeCustomComponents();
    }
    private void InitializeCustomComponents()
    {
        // TextBoxの初期化
        textBoxInput = new TextBox();
        textBoxInput.Location = new Point(20, 20);
        textBoxInput.Width = 200;
        // Buttonの初期化
        buttonGetText = new Button();
        buttonGetText.Text = "取得";
        buttonGetText.Location = new Point(230, 20);
        buttonGetText.Click += buttonGetText_Click;
        // Labelの初期化
        labelOutput = new Label();
        labelOutput.Location = new Point(20, 60);
        labelOutput.Width = 300;
        // フォームにコントロールを追加
        this.Controls.Add(textBoxInput);
        this.Controls.Add(buttonGetText);
        this.Controls.Add(labelOutput);
    }
}

このコードでは、TextBox、Button、Labelを持つ簡単なフォームを作成しています。

ボタンを使った文字列取得

次に、ボタンをクリックしたときにTextBoxから文字列を取得し、Labelに表示する機能を実装します。

以下のコードを追加します。

private void buttonGetText_Click(object sender, EventArgs e)
{
    // TextBoxから文字列を取得
    string inputText = textBoxInput.Text; 
    
    // 取得した文字列をLabelに表示
    labelOutput.Text = "入力された文字列: " + inputText; 
}

このコードでは、ボタンがクリックされたときにTextBoxから文字列を取得し、Labelに表示します。

リアルタイムでの文字列取得

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

以下のコードを追加して、TextBoxの内容が変更されるたびにLabelに表示するようにします。

public MyForm()
{
    InitializeComponent();
    InitializeCustomComponents();
    textBoxInput.TextChanged += textBoxInput_TextChanged; // イベントハンドラの追加
}
private void textBoxInput_TextChanged(object sender, EventArgs e)
{
    // TextBoxの内容が変更されたときにLabelに表示
    labelOutput.Text = "入力中: " + textBoxInput.Text; 
}

このコードでは、TextBoxの内容が変更されるたびにLabelにリアルタイムで表示されるようになります。

これにより、ユーザーは入力内容を即座に確認できます。

エラーハンドリング

入力値の検証

ユーザーがTextBoxに入力した値が期待される形式であるかどうかを検証することは、アプリケーションの信頼性を高めるために重要です。

以下は、入力値の検証を行う方法の一例です。

例えば、TextBoxに数値のみを入力させたい場合、以下のように実装します。

private void buttonGetText_Click(object sender, EventArgs e)
{
    // TextBoxから文字列を取得
    string inputText = textBoxInput.Text; 
    // 入力値の検証
    if (int.TryParse(inputText, out int number))
    {
        labelOutput.Text = "入力された数値: " + number; 
    }
    else
    {
        labelOutput.Text = "無効な入力です。数値を入力してください。"; 
    }
}

このコードでは、int.TryParseメソッドを使用して、入力された文字列が数値に変換できるかどうかを検証しています。

無効な入力の場合は、エラーメッセージをLabelに表示します。

例外処理の実装

ユーザーの入力に対して例外が発生する可能性がある場合、適切な例外処理を実装することが重要です。

以下は、例外処理を追加したサンプルコードです。

private void buttonGetText_Click(object sender, EventArgs e)
{
    try
    {
        // TextBoxから文字列を取得
        string inputText = textBoxInput.Text; 
        // 入力値の検証
        if (string.IsNullOrWhiteSpace(inputText))
        {
            throw new ArgumentException("入力が空です。"); 
        }
        // ここで他の処理を行う
        labelOutput.Text = "入力された文字列: " + inputText; 
    }
    catch (ArgumentException ex)
    {
        labelOutput.Text = ex.Message; 
    }
    catch (Exception ex)
    {
        labelOutput.Text = "エラーが発生しました: " + ex.Message; 
    }
}

このコードでは、try-catchブロックを使用して、特定の例外(この場合はArgumentException)をキャッチし、エラーメッセージをLabelに表示します。

一般的な例外もキャッチして、ユーザーにエラーメッセージを提供します。

ユーザーへのフィードバック

エラーハンドリングの一環として、ユーザーに対して適切なフィードバックを提供することが重要です。

エラーメッセージは明確で具体的であるべきです。

以下は、ユーザーへのフィードバックを強化するためのポイントです。

  • 明確なメッセージ: エラーメッセージは具体的で、何が問題であるかを明確に伝える必要があります。
  • 視覚的な強調: エラーメッセージを赤色で表示するなど、視覚的に目立たせることで、ユーザーがすぐに気づけるようにします。
  • 再入力の促し: エラーが発生した場合、ユーザーに再入力を促すメッセージを表示します。

以下は、エラーメッセージを赤色で表示するサンプルコードです。

private void buttonGetText_Click(object sender, EventArgs e)
{
    try
    {
        // TextBoxから文字列を取得
        string inputText = textBoxInput.Text; 
        // 入力値の検証
        if (string.IsNullOrWhiteSpace(inputText))
        {
            throw new ArgumentException("入力が空です。"); 
        }
        // ここで他の処理を行う
        labelOutput.Text = "入力された文字列: " + inputText; 
        labelOutput.ForeColor = Color.Black; // 正常時は黒色
    }
    catch (ArgumentException ex)
    {
        labelOutput.Text = ex.Message; 
        labelOutput.ForeColor = Color.Red; // エラー時は赤色
    }
    catch (Exception ex)
    {
        labelOutput.Text = "エラーが発生しました: " + ex.Message; 
        labelOutput.ForeColor = Color.Red; // エラー時は赤色
    }
}

このように、ユーザーへのフィードバックを強化することで、アプリケーションの使いやすさを向上させることができます。

応用例

複数のTextBoxからのデータ取得

複数のTextBoxからデータを取得する場合、各TextBoxの内容を個別に取得し、必要に応じて処理を行います。

以下は、2つのTextBoxから文字列を取得し、Labelに表示するサンプルコードです。

private void buttonGetData_Click(object sender, EventArgs e)
{
    // TextBoxから文字列を取得
    string firstName = textBoxFirstName.Text; 
    string lastName = textBoxLastName.Text; 
    // 取得した文字列をLabelに表示
    labelOutput.Text = "フルネーム: " + firstName + " " + lastName; 
}

このコードでは、textBoxFirstNametextBoxLastNameからそれぞれの名前を取得し、Labelにフルネームとして表示します。

複数のTextBoxからのデータ取得は、ユーザーの入力を集約する際に非常に便利です。

取得した文字列のデータベース保存

取得した文字列をデータベースに保存するには、データベース接続を行い、SQL文を使用してデータを挿入します。

以下は、SQLiteデータベースにデータを保存するサンプルコードです。

private void buttonSaveToDatabase_Click(object sender, EventArgs e)
{
    string inputText = textBoxInput.Text; 
    // データベース接続
    using (var connection = new SQLiteConnection("Data Source=mydatabase.db;Version=3;"))
    {
        connection.Open();
        
        // SQL文の準備
        string sql = "INSERT INTO MyTable (InputText) VALUES (@inputText)";
        using (var command = new SQLiteCommand(sql, connection))
        {
            command.Parameters.AddWithValue("@inputText", inputText); 
            command.ExecuteNonQuery(); // データの挿入
        }
    }
    labelOutput.Text = "データが保存されました。"; 
}

このコードでは、SQLiteデータベースに接続し、TextBoxから取得した文字列をMyTableに保存します。

データベースの接続やSQL文の実行には、適切なエラーハンドリングを行うことが推奨されます。

文字列のフォーマット変換

取得した文字列を特定のフォーマットに変換することもよくあります。

例えば、日付や数値のフォーマットを変更する場合です。

以下は、TextBoxから取得した日付文字列をDateTime型に変換し、特定のフォーマットで表示するサンプルコードです。

private void buttonFormatDate_Click(object sender, EventArgs e)
{
    string dateString = textBoxDate.Text; 
    // 日付文字列をDateTime型に変換
    if (DateTime.TryParse(dateString, out DateTime dateValue))
    {
        // フォーマットを変更して表示
        labelOutput.Text = "フォーマットされた日付: " + dateValue.ToString("yyyy/MM/dd"); 
    }
    else
    {
        labelOutput.Text = "無効な日付形式です。"; 
    }
}

このコードでは、TextBoxから取得した日付文字列をDateTime.TryParseメソッドで変換し、成功した場合は指定したフォーマットyyyy/MM/ddでLabelに表示します。

無効な形式の場合は、エラーメッセージを表示します。

文字列のフォーマット変換は、データの整合性を保つために重要です。

よくある質問

文字列が空の場合はどうする?

TextBoxから取得した文字列が空である場合、適切なエラーハンドリングを行うことが重要です。

空の文字列が入力された場合、ユーザーに対してエラーメッセージを表示し、再入力を促すことが一般的です。

以下のように実装できます。

if (string.IsNullOrWhiteSpace(inputText))
{
    labelOutput.Text = "入力が空です。値を入力してください。"; 
}

このコードでは、string.IsNullOrWhiteSpaceメソッドを使用して、空または空白のみの文字列を検出し、エラーメッセージを表示します。

取得した文字列を数値に変換するには?

取得した文字列を数値に変換するには、int.TryParsedouble.TryParseメソッドを使用します。

これにより、文字列が数値に変換可能かどうかを確認し、変換を行うことができます。

以下は、整数に変換する例です。

if (int.TryParse(inputText, out int number))
{
    labelOutput.Text = "入力された数値: " + number; 
}
else
{
    labelOutput.Text = "無効な数値です。"; 
}

このコードでは、int.TryParseを使用して文字列を整数に変換し、成功した場合はその値を表示します。

変換に失敗した場合は、エラーメッセージを表示します。

TextBoxの入力制限はどう設定する?

TextBoxの入力制限を設定するには、KeyPressイベントを利用して、特定の文字のみを許可することができます。

例えば、数値のみを入力させたい場合、以下のように実装します。

private void textBoxInput_KeyPress(object sender, KeyPressEventArgs e)
{
    // 数字以外の入力を無効にする
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
    {
        e.Handled = true; // 入力を無効にする
    }
}

このコードでは、KeyPressイベントを使用して、数字以外の文字が入力された場合にその入力を無効にします。

これにより、TextBoxには数値のみが入力されるようになります。

まとめ

この記事では、C#のWindowsフォームアプリケーションにおけるTextBoxからの文字列取得方法について詳しく解説しました。

具体的には、Textプロパティの利用や文字列取得のタイミング、エラーハンドリングの重要性、さらには複数のTextBoxからのデータ取得やデータベースへの保存方法、文字列のフォーマット変換についても触れました。

これらの知識を活用することで、より使いやすく、信頼性の高いアプリケーションを開発することが可能になります。

ぜひ、実際のプロジェクトにおいてこれらの技術を試してみてください。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

関連カテゴリーから探す

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