6

WinForms 3.5 で RichTextBox を使用していますが、含まれているテキストをプログラムで編集すると、それらの変更が組み込みの元に戻す機能で利用できなくなることがわかりました。

これらの変更を元に戻す/やり直すことができるようにする方法はありますか?

4

2 に答える 2

2

これは、私がいじり回すことにしたコードの一部です。

        string buffer = String.Empty;
        string buffer2 = String.Empty;
        public Form3()
        {
            InitializeComponent();
            this.richTextBox1.KeyDown += new KeyEventHandler(richTextBox1_KeyDown);
            this.richTextBox1.TextChanged += new EventHandler(richTextBox1_TextChanged);
        }

        void richTextBox1_TextChanged(object sender, EventArgs e)
        {
            buffer2 = buffer;
            buffer = richTextBox1.Text;
        }

        void richTextBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control && e.KeyCode == Keys.Z)
            {
                this.richTextBox1.Text = buffer2;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.Text = "Changed";
        }

それは基本的に私自身の元に戻す機能を書いています。私がしているのは、古い値を 1 つのバッファー変数に格納し、新しい値を 2 番目のバッファー変数に格納することだけです。テキストが変更されるたびに、これらの値が更新されます。次に、ユーザーが「CTRL-Z」を押すと、テキストが古い値に置き換えられます。ハック?少し。しかし、それはほとんどの場合機能します。

于 2008-11-09T04:57:31.120 に答える