[C#] TextBoxで複数行入力を実現する方法

C#のWindowsフォームアプリケーションでTextBoxに複数行入力を実現するには、TextBoxコントロールのMultilineプロパティをtrueに設定します。

これにより、ユーザーは複数行のテキストを入力できるようになります。

また、ScrollBarsプロパティをVerticalBothに設定することで、入力が多くなった場合にスクロールバーを表示することも可能です。

さらに、WordWrapプロパティをtrueにすると、行の折り返しが有効になります。

これらの設定は、Visual Studioのプロパティウィンドウからも行うことができます。

この記事でわかること
  • TextBoxで複数行入力を実現する方法
  • ユーザーインターフェースの改善手法
  • 様々な応用例の実装方法
  • C# Windowsフォームの活用法

目次から探す

複数行入力の実現方法

C#のWindowsフォームアプリケーションでTextBoxを使用する際、複数行の入力を実現するためにはいくつかのプロパティを設定する必要があります。

ここでは、主にMultilineScrollBarsWordWrapプロパティについて解説します。

Multilineプロパティの設定

Multilineプロパティをtrueに設定することで、TextBoxが複数行の入力を受け付けるようになります。

デフォルトではfalseに設定されているため、まずこのプロパティを変更する必要があります。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent(); // フォームの初期化
        TextBox textBox = new TextBox();
        textBox.Multiline = true; // 複数行入力を有効にする
        textBox.Size = new Size(300, 200); // サイズの設定
        this.Controls.Add(textBox); // フォームにTextBoxを追加
    }
}

このコードを実行すると、ユーザーはTextBoxに複数行のテキストを入力できるようになります。

ScrollBarsプロパティの活用

ScrollBarsプロパティを設定することで、TextBox内のテキストが多くなった場合にスクロールバーを表示させることができます。

これにより、ユーザーは入力したテキストを簡単にスクロールして確認できます。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent(); // フォームの初期化
        TextBox textBox = new TextBox();
        textBox.Multiline = true; // 複数行入力を有効にする
        textBox.ScrollBars = ScrollBars.Vertical; // 垂直スクロールバーを表示
        textBox.Size = new Size(300, 200); // サイズの設定
        this.Controls.Add(textBox); // フォームにTextBoxを追加
    }
}

この設定により、TextBoxに入力されたテキストが多くなると、垂直スクロールバーが表示され、ユーザーはスクロールして内容を確認できます。

WordWrapプロパティの設定

WordWrapプロパティをtrueに設定すると、TextBox内でテキストが自動的に折り返されます。

これにより、長い単語や文が入力された場合でも、ユーザーはテキストを見やすく保つことができます。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent(); // フォームの初期化
        TextBox textBox = new TextBox();
        textBox.Multiline = true; // 複数行入力を有効にする
        textBox.WordWrap = true; // テキストの折り返しを有効にする
        textBox.Size = new Size(300, 200); // サイズの設定
        this.Controls.Add(textBox); // フォームにTextBoxを追加
    }
}

この設定により、ユーザーが入力したテキストが自動的に折り返され、視認性が向上します。

応用例

C#のWindowsフォームを使用して、TextBoxの複数行入力機能を活用したさまざまなアプリケーションを作成することができます。

ここでは、メモ帳アプリ、フィードバックフォーム、ログ表示ウィンドウの実装例を紹介します。

メモ帳アプリの作成

メモ帳アプリは、ユーザーが自由にテキストを入力し、保存することができるシンプルなアプリケーションです。

以下のコードは、基本的なメモ帳アプリの実装例です。

partial class MyForm : Form
{
    private TextBox textBox;
    private Button saveButton;
    public MyForm()
    {
        InitializeComponent(); // フォームの初期化
        textBox = new TextBox();
        textBox.Multiline = true; // 複数行入力を有効にする
        textBox.Size = new Size(400, 300); // サイズの設定
        this.Controls.Add(textBox); // フォームにTextBoxを追加
        saveButton = new Button();
        saveButton.Text = "保存"; // ボタンのテキスト
        saveButton.Click += SaveButton_Click; // ボタンクリックイベントの設定
        this.Controls.Add(saveButton); // フォームにボタンを追加
    }
    private void SaveButton_Click(object sender, EventArgs e)
    {
        // ファイル保存ダイアログを表示
        using (SaveFileDialog saveFileDialog = new SaveFileDialog())
        {
            saveFileDialog.Filter = "テキストファイル (*.txt)|*.txt|すべてのファイル (*.*)|*.*";
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                // テキストをファイルに保存
                System.IO.File.WriteAllText(saveFileDialog.FileName, textBox.Text);
            }
        }
    }
}

このアプリでは、ユーザーが入力したテキストを指定したファイルに保存することができます。

フィードバックフォームの実装

フィードバックフォームは、ユーザーからの意見や感想を収集するためのアプリケーションです。

以下のコードは、フィードバックフォームの実装例です。

partial class MyForm : Form
{
    private TextBox feedbackTextBox;
    private Button submitButton;
    public MyForm()
    {
        InitializeComponent(); // フォームの初期化
        feedbackTextBox = new TextBox();
        feedbackTextBox.Multiline = true; // 複数行入力を有効にする
        feedbackTextBox.Size = new Size(400, 200); // サイズの設定
        this.Controls.Add(feedbackTextBox); // フォームにTextBoxを追加
        submitButton = new Button();
        submitButton.Text = "送信"; // ボタンのテキスト
        submitButton.Click += SubmitButton_Click; // ボタンクリックイベントの設定
        this.Controls.Add(submitButton); // フォームにボタンを追加
    }
    private void SubmitButton_Click(object sender, EventArgs e)
    {
        // フィードバックを処理するロジックをここに追加
        MessageBox.Show("フィードバックが送信されました。", "送信完了", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
}

このフィードバックフォームでは、ユーザーが入力した内容を送信ボタンをクリックすることで処理することができます。

実際のデータ送信機能は、必要に応じて追加できます。

ログ表示ウィンドウの作成

ログ表示ウィンドウは、アプリケーションの動作状況やエラーメッセージを表示するためのウィンドウです。

以下のコードは、ログ表示ウィンドウの実装例です。

partial class MyForm : Form
{
    private TextBox logTextBox;
    private Button addLogButton;
    public MyForm()
    {
        InitializeComponent(); // フォームの初期化
        logTextBox = new TextBox();
        logTextBox.Multiline = true; // 複数行入力を有効にする
        logTextBox.Size = new Size(400, 300); // サイズの設定
        logTextBox.ReadOnly = true; // 読み取り専用に設定
        this.Controls.Add(logTextBox); // フォームにTextBoxを追加
        addLogButton = new Button();
        addLogButton.Text = "ログ追加"; // ボタンのテキスト
        addLogButton.Click += AddLogButton_Click; // ボタンクリックイベントの設定
        this.Controls.Add(addLogButton); // フォームにボタンを追加
    }
    private void AddLogButton_Click(object sender, EventArgs e)
    {
        // ログメッセージを追加
        logTextBox.AppendText($"[{DateTime.Now}] ログメッセージ\n"); // 現在の日時とメッセージを追加
    }
}

このログ表示ウィンドウでは、ボタンをクリックすることで新しいログメッセージが追加され、ユーザーはアプリケーションの動作状況を確認できます。

よくある質問

TextBoxのサイズを動的に変更できますか?

はい、TextBoxのサイズを動的に変更することができます。

フォームのサイズや他のコントロールの配置に応じて、TextBoxのサイズをプログラムで変更することが可能です。

以下のように、Sizeプロパティを使用してサイズを設定できます。

textBox.Size = new Size(400, 300); // 幅400、高さ300に設定

複数行入力で改行を無効にすることはできますか?

はい、複数行入力のTextBoxで改行を無効にすることは可能ですが、標準のTextBoxでは直接的な設定はありません。

代わりに、KeyPressイベントを利用してEnterキーの入力を無効にすることができます。

以下のように実装します。

textBox.KeyPress += (s, e) =>
{
    if (e.KeyChar == (char)Keys.Enter) // Enterキーが押された場合
    {
        e.Handled = true; // イベントを処理済みにする
    }
};

TextBoxの内容をファイルに保存する方法は?

TextBoxの内容をファイルに保存するには、System.IO名前空間を使用してファイル操作を行います。

SaveFileDialogを利用して保存先を選択し、File.WriteAllTextメソッドで内容を保存します。

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

using (SaveFileDialog saveFileDialog = new SaveFileDialog())
{
    saveFileDialog.Filter = "テキストファイル (*.txt)|*.txt|すべてのファイル (*.*)|*.*";
    if (saveFileDialog.ShowDialog() == DialogResult.OK)
    {
        System.IO.File.WriteAllText(saveFileDialog.FileName, textBox.Text); // 内容をファイルに保存
    }
}

このコードを使用することで、ユーザーが入力したテキストを指定したファイルに保存することができます。

まとめ

この記事では、C#のWindowsフォームにおけるTextBoxを使用した複数行入力の実現方法や、ユーザーインターフェースの改善方法について詳しく解説しました。

また、実際のアプリケーション例としてメモ帳アプリ、フィードバックフォーム、ログ表示ウィンドウの作成方法も紹介しました。

これらの知識を活用して、独自のアプリケーションを作成し、ユーザーにとって使いやすいインターフェースを提供してみてください。

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