2008-11-09 69 views
6

我在WinForms 3.5中使用RichTextBox,發現當我以編程方式編輯包含的文本時,這些更改不再可用於內置的撤消功能。.NET RichTextBox撤消

有沒有辦法讓它變成可用於撤銷/重做?

+0

您的意思是「以編程方式」嗎? :) – 2008-11-09 10:24:06

+0

哈哈....是的,絕對意味着以編程方式 – 2008-11-09 12:07:25

回答

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

它基本上是我寫我自己的撤消功能。我所做的只是將舊值存儲在一個緩衝區變量中,並將新值存儲在第二個緩衝區變量中。每次文本更改時,這些值都會更新。然後,如果用戶點擊「CTRL-Z」,則用舊值替換文本。哈克?一點。但是,它在大多數情況下都有效。