Windowsフォームアプリケーションで、MultilineプロパティをTrueに設定したテキストボックスでは、複数行のテキストを入力することができます。
複数行のテキストが入力できる状態に設定したテキストボックスは、デフォルト(既定値)では1行の文字列がテキストボックスのWidth(横幅)までくると、自動で改行(折り返し)されます。
テキストが自動で折り返されることで、1行の文字列がテキストボックスのWidthを超えても途中から見えなくなることはなくなります。
しかし、場合によっては、自動で折り返さずにそのまま1行の文字列として表示したい場合があります。
そこで今回はC#のWindowsフォームアプリケーションで、複数行入力できるテキストボックスを配置した時に、テキストが自動で改行されないようにする方法を紹介します。
本記事では、Visual Studioで作成したC#のWindowsフォームアプリケーションのプロジェクトに記述するコードを記載します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。
目次
自動折り返し(自動改行)の有無を設定する
テキストボックスに入力されたテキストが右端まで来た際に自動で折り返すかどうかを設定するには、System.Windows.Forms名前空間にあるTextBoxクラスのWordWrapプロパティを使用します。
WordWrapプロパティは、フォームデザイナーのプロパティグリッド、またはコードで設定することができます。
デザイナーのプロパティグリッドで設定する
フォームデザイナーを開きます。
フォームデザイナーを開いたら、プロパティウィンドウを表示します。
プロパティウィンドウが表示されていない場合は、メニューバーの「表示」メニューにある「プロパティ ウィンドウ」をクリックするかF4キーを押してください。
プロパティウィンドウが表示されたら、フォームに配置したテキストボックスをクリックして選択します。
上記の画像のプロパティグリッドは項目別ではなくアルファベット順で表示しています。
テキストの自動折り返しの有無を設定します。
デザイナーのプロパティグリッドにあるWordWrapプロパティを選択します。
WordWrapプロパティはデフォルト(既定値)でTrueになっていますので、自動折り返しを行わないようにする時は、WordWrapプロパティのドロップダウンリストボックスからFalseを選択します。
WordWrapを設定する場合はテキストボックスが複数行入力可能になっている必要がありますので、Multilineプロパティで複数行テキストが入力できるようにしておきます。
デザイナーのプロパティグリッドにあるMultilineプロパティを選択し、ドロップダウンリストボックスからTrueを選択してください。
コードで設定する
フォームに「textBox1」という名前のテキストボックスを配置し、コードエディタを表示して以下のコードを入力します。
1 2 3 4 |
// 複数行入力可能にする this.textBox1.Multiline = true; // 自動折り返しを無効にする this.textBox1.WordWrap = false; |
上記のコードはフォームのコンストラクタ内や、フォームのロードイベント(Form.Load)メソッド内、またはフォームのオンロード(OnLoad)メソッドをオーバーライドしたメソッド内に記述することで、フォームの起動時に設定することができます。
サンプルプログラム
サンプルとして複数行のテキストを入力できるテキストボックスを配置した、簡易なメモ帳のプログラムを作成します。
ユーザーインターフェース
フォームには、テキストを新規作成する「新規」ボタン(button1)と、ファイルを開いてテキストを表示する「開く」ボタン(button2)と、テキストをファイルに保存する「保存」ボタン(button3)を配置し、テキストを編集するテキストボックス(textBox1)を配置します。
テキストボックスは、複数行入力できるようにMultilineプロパティの値をTrueに設定して、高さを広げておきます。
ソースコード
ボタンがクリックされた時のイベント処理とフォームを閉じる時のイベント処理を記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { // コンストラクタ public Form1() { InitializeComponent(); // テキストボックスにスクロールバーを表示する this.textBox1.ScrollBars = ScrollBars.Both; } // テキストの自動折り返しの有無を設定 private void button1_Click(object sender, EventArgs e) { try { // 現在のテキストの自動折り返しを行うかどうかの設定値の逆を設定する this.textBox1.WordWrap = !this.textBox1.WordWrap; } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } |
プログラムの実行
プロジェクトをビルドして実行(デバッグ)してフォームを表示します。
テキストボックスに自動で折り返しされるように文字列を入力します。
ボタンをクリックすると、テキストボックスの右端で自動で折り返されていたテキストが、1行で表示されてスクロールバーが有効になります。