[C#][Windows Formsアプリ][TextBox] Undoメソッドで直前の作業を取り消す

スポンサーリンク

はじめに

入力欄で文字を打ち間違えたとき、Ctrl + Z で直前の操作を取り消せます。
同じことをプログラムから実行できるのが Undo() メソッド です。

 

Undoメソッドとは?

Undo() メソッドは、TextBoxで行った直前の編集操作を取り消します。
ユーザーが入力した内容を「一手前の状態」に戻すことができます。

例:TextBoxに「Hello」と入力 → 「Hi」に書き換えた場合、
textBox1.Undo(); を呼ぶと「Hello」に戻ります。

 

基本の使い方

コード例

// 直前の操作を取り消す
textBox1.Undo();

 

実用例:取り消しボタンの実装

using System;
using System.Windows.Forms;

namespace UndoMethodSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            textBox1.Multiline = true;
        }

        private void buttonUndo_Click(object sender, EventArgs e)
        {
            if (textBox1.CanUndo)
            {
                textBox1.Undo();
            }
            else
            {
                MessageBox.Show("取り消す操作はありません。");
            }
        }
    }
}

この例では、「取り消し」ボタンを押すと直前の編集が取り消されます。
取り消し可能かどうかは CanUndo プロパティで確認できます。

 

CanUndoプロパティとの組み合わせ

  • CanUndotrue の場合 → Undo() を実行できる
  • false の場合 → 取り消せる操作がない状態
if (textBox1.CanUndo)
{
    textBox1.Undo();
}

 

注意点

  • Undo() で取り消せるのは「直前の操作」のみ
  • 複数段階の取り消しはできない(Wordのような履歴型のUndoは非対応)
  • プログラムから Text を変更した場合、それはUndoの対象外になることが多い

 

まとめ

  • Undo() は直前の編集操作を取り消すメソッド
  • CanUndo と組み合わせて使うと安全
  • 取り消しは1段階のみで履歴管理はされない点に注意

フォームに「取り消し」機能を実装するなら必ず押さえておきたいメソッドです。

Please follow and like us:

コメント

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