はじめに
入力欄で文字を打ち間違えたとき、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プロパティとの組み合わせ
CanUndoがtrueの場合 →Undo()を実行できるfalseの場合 → 取り消せる操作がない状態
if (textBox1.CanUndo)
{
textBox1.Undo();
}
注意点
Undo()で取り消せるのは「直前の操作」のみ- 複数段階の取り消しはできない(Wordのような履歴型のUndoは非対応)
- プログラムから
Textを変更した場合、それはUndoの対象外になることが多い
まとめ
Undo()は直前の編集操作を取り消すメソッドCanUndoと組み合わせて使うと安全- 取り消しは1段階のみで履歴管理はされない点に注意
フォームに「取り消し」機能を実装するなら必ず押さえておきたいメソッドです。
Please follow and like us:

コメント