Windowsフォームアプリケーションのフォームに、複数行入力できるテキストボックスを配置している場合、テキストボックスにフォーカスがある状態でEnterキーを押すと、新しい行が作成(改行)されます。
しかし、フォームに既定のボタンが設定されていると、テキストボックス内でEnterキーを押しても、新しい行は作成されず、既定のボタンがクリックされてしまいます。
テキストボックスを複数行入力できるように設定する方法については、以下の記事を参考にしてください。
フォームの既定のボタンを設定する方法については、以下の記事を参考にしてください。
フォームに既定のボタンが設定されている状態では、テキストボックス内でEnterキーを押しただけでは改行して新しい行を作成することはできず、Ctrl + Enterキーを押すことで改行できます。
ユーザーがCtrlキーとEnterキーを押して改行する操作に慣れていれば問題ないですが、そうでなければ、テキストボックス内では改行するためにはCtrlキーとEnterキーを組み合わせて押さなければならないことをユーザーに知らせる必要があります。
また、ユーザービリティを考えると、Ctrlキーを押していなければ、Enterキーで改行できないのは、望ましいとは言えません。
そこで今回は、フォームに既定のボタンが設定されている場合でも、テキストボックス内でEnterキーを押すだけで改行して新しい行の作成ができるようにする方法について紹介します。
本記事では、Visual Studioで作成したC#のWindowsフォームアプリケーションのプロジェクトに記述するコードを記載します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。
目次
Enterキーで改行して新しい行の作成
フォームに既定のボタンが設定されている場合でも、Enterキーだけで改行して新しい行を作成するには、System.Windows.Forms名前空間のTextBoxクラスのAcceptsReturnプロパティを使用します。
AcceptsReturnプロパティは、デフォルト(既定値)でFalseに設定されているので、Enterキーのみでの改行を許可する場合は、Trueに設定します。
AcceptsReturnプロパティは、フォームデザイナーのプロパティグリッド、またはコードで設定することができます。
デザイナーのプロパティグリッドで設定する
フォームデザイナーを開きます。
フォームデザイナーを開いたら、プロパティウィンドウを表示します。
プロパティウィンドウが表示されていない場合は、メニューバーの「表示」メニューにある「プロパティ ウィンドウ」をクリックするかF4キーを押してください。
プロパティウィンドウが表示されたら、フォームに配置したテキストボックスをクリックして選択します。
上記の画像のプロパティグリッドは項目別ではなくアルファベット順で表示しています。
デザイナーのプロパティグリッドにあるAcceptsReturnプロパティを選択します。
AcceptsReturnプロパティのドロップダウンリストボックスからTrueを選択します。
コードで設定する
フォームに「textBox1」という名前のテキストボックスを配置し、コードエディタを表示して以下のコードを入力します。
1 2 |
// フォームに配置されているテキストボックス(textBox1)の改行を許可する this.textBox1.AcceptsReturn = true; |
上記のコードはフォームのコンストラクタ内や、フォームのロードイベント(Form.Load)メソッド内、またはフォームのオンロード(OnLoad)メソッドをオーバーライドしたメソッド内に記述することで、フォームの起動時に設定することができます。
サンプルプログラム
サンプルとしてWindowsフォームアプリケーションで、複数行のテキストを入力できるテキストボックスを配置して、フォームに配置したボタンを既定のボタンに設定したプログラムを作成します。
ユーザーインターフェース
フォームには、テキストを複数行入力できるようにしたテキストボックス(textBox1)と、フォームの既定のボタンに設定するボタン(button1)と、AcceptsReturnプロパティの値のON(True)とOFF(False)を切り替えるラジオボタン(radioButton1とradioButton2)を配置します。
テキストボックスは、複数行入力できるように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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { // コンストラクタ public Form1() { InitializeComponent(); // フォームの既定のボタン(Enterキーを押した時にクリックされるボタン)を設定 this.AcceptButton = this.button1; // テキストボックスにスクロールバーを表示する this.textBox1.ScrollBars = ScrollBars.Vertical; // OFFラジオボタンを選択 this.radioButton2.Checked = true; } // ラジオボタンの選択が変更された時のイベント private void radioButton_CheckedChanged(object sender, EventArgs e) { try { if (this.radioButton1.Checked) { // AcceptsReturnプロパティをTrueに設定する this.textBox1.AcceptsReturn = true; } else { // AcceptsReturnプロパティをFalseに設定する this.textBox1.AcceptsReturn = false; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } // ボタンがクリックされた時のイベント private void button1_Click(object sender, EventArgs e) { try { MessageBox.Show("ボタンがクリックされました。"); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } |
プログラムの実行
プロジェクトをビルドして実行(デバッグ)してフォームを表示します。
テキストボックスのAcceptButtonプロパティの既定値はFalseなので、テキストボックスでEnterキーを押しても、ボタンがクリックされた時のイベントが実行されます。
ONラジオボタンをクリックする(AcceptButtonプロパティをTrueに設定する)ことで、テキストボックス内でEnterキーを押して改行することができるようになります。