[C#][Windows Formsアプリ][TextBox] Readonlyプロパティで読み取り専用にしよう

スポンサーリンク

はじめに

TextBox編集可否を切り替えるプロパティ です。true にすると、ユーザーは入力や変更ができなくなります。ただし、文字列は表示される ので、コピー操作は可能です。ユーザーに「見せたいけれど編集はさせたくない」ケースで便利です。

基本の使い方

デザイナーで設定

フォーム上の TextBox をクリックし、プロパティウィンドウで ReadOnly を True に設定。

textBox1.ReadOnly = true;

Enabledとの違い

初心者が混乱しやすいのが Enabled プロパティとの違いです。

プロパティ ユーザー入力 コピー 外観
Readonly = true 不可 可能 通常の見た目
Enabled = true 不可 不可 グレーアウト表示

つまり、

  • ReadOnly → 「内容は見せたいけど、書き換えさせない」

  • Enabled = false → 「内容自体を操作対象外にしたい」

という使い分けになります。

利用シーン

  • 計算結果や固定情報を表示する欄
    例えば「合計金額」をユーザーに見せたいが編集はさせないとき。
  • ログや履歴表示欄
    複数行の TextBox に処理結果を出力し、ユーザーはコピーだけできるようにしたいとき。
  • 一時的に入力を制御
    ボタンを押すまでは編集不可にしておく、といった制御。

サンプルコード

using System;
using System.Windows.Forms;

namespace TextBoxReadOnlySample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            // 初期状態は読み取り専用にする
            textBox1.ReadOnly = true;
            textBox1.Text = "これは編集できませんが、コピーはできます。";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // ボタンを押すと編集可能に切り替え
            textBox1.ReadOnly = false;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            // 再び編集不可に切り替え
            textBox1.ReadOnly = true;
        }
    }
}

 

まとめ

  • ReadOnly = true にすると 編集不可だが表示・コピーは可能。
  • Enabled = false との違いを理解して使い分けることが大事。
  • 固定情報の表示やログの出力欄などでよく使われる。

これを押さえておくと、入力フォームやビューア系のアプリで「適切な制御」ができるようになります

Please follow and like us:

コメント

タイトルとURLをコピーしました