繁体   English   中英

.NET RichTextBox 撤销

[英].NET RichTextBox undo

我在 WinForms 3.5 中使用 RichTextBox,我发现当我以编程方式编辑包含的文本时,这些更改不再适用于内置的撤消功能。

有没有办法使这些更改可用于撤消/重做?

这只是我决定弄乱的一些代码:

        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";
        }

基本上是我在编写自己的撤消功能。 我所做的只是将旧值存储在一个缓冲区变量中,并将新值存储在第二个缓冲区变量中。 每次文本更改时,这些值都会更新。 然后,如果用户点击“CTRL-Z”,它将用旧值替换文本。 黑客? 一点。 但是,它在大多数情况下都有效。

您需要替换选定的文本,而不是替换文本:

richTextBox.SelectAll();
richTextBox.SelectedText = NewText;

然而,这是使用当前版本的 winforms 进行测试的,该版本具有相同的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM