フォームで既定のボタンが有効になっている場合 複数行のテキストボックスで改行が入力できない - C#

フォームで既定のボタンが有効になっている場合、複数行テキストボックスでEnterキーを押すと改行に入力ではなく既定のボタンのクリックの動作になります。フォームで既定のボタンが設定されている場合でもテキストボックスに改行を入力する動作にする方法を紹介します。

UI

下図のUIを作成します。ButtonとTextBoxを2つ配置します。1つはMultilinesプロパティをTrueにし複数行テキストボックスにします。


フォームの"AcceptButton"プロパティの値をフォームに設置したボタンに設定します。(今回の場合は"button1")


プロパティ設定

複数行設定にしたテキストボックスを選択し、プロパティウィンドウから"AcceptsReturn"プロパティを探します。"AcceptsReturn"プロパティの値を"True"に設定します。


コード

以下のコードを記述します。button1がクリックされた際にメッセージボックスを表示するコードです。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace AcceptReturnTextBox
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      MessageBox.Show("Button1が押されました");
    }
  }
}

実行結果

プロジェクトを実行します。"AcceptsReturn"プロパティが"False"のテキストボックスで[Enter]キーを押すとデフォルトボタンがクリックされたことになり、下図のメッセージボックスが表示されます。


"AcceptsReturn"プロパティが"True"のテキストボックスで[Enter]キーを押した場合はテキストボックスに改行が入力されます。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2012-06-21
iPentec all rights reserverd.