2010-09-09 69 views
7

我在應用程序上有一個RichTextBox控件,這裏是我的問題:當應用程序運行時,如果我開始用鼠標選擇某個單詞中的某些字符並繼續在它外面選擇,則選擇會自動包含我開始選擇的整個單詞以及我想從中選擇一部分的任何其他單詞,如果我沒有弄錯的話,單詞是ish。C#RichTextBox選擇問題

如:

  • 的文字是: 「又一個foobar的」
  • 我要選擇的是: 「只要ANO [療法FOO]欄中的」
  • (中的[]之間的事情)
  • 什麼是實際選擇:「只是[另一個foobar]」

問題是隻用鼠標選擇,如果我選擇文本與鍵盤它工作得很好。此外,控件的自動字選擇屬性關閉。任何想法爲什麼是這樣?

+0

Hrm。這是否修復? http://connect.microsoft.com/VisualStudio/feedback/details/115441/richtextboxs-autowordselection-property-does-not-work-correctly – 2010-09-09 16:43:43

+0

嗯...我認爲就是這樣。有任何想法的解決方法? – cantrem 2010-09-09 17:31:08

回答

13

AutoWordSelection屬性實現中存在一個愚蠢的錯誤。解決方法同樣愚蠢。爲您的項目添加一個新類並粘貼下面顯示的代碼。編譯。將新控件從工具箱的頂部放到表單上,替換現有的RTB。

using System; 
using System.Windows.Forms; 

public class FixedRichTextBox : RichTextBox { 
    protected override void OnHandleCreated(EventArgs e) { 
     base.OnHandleCreated(e); 
     if (!base.AutoWordSelection) { 
      base.AutoWordSelection = true; 
      base.AutoWordSelection = false; 
     } 
    } 
} 

我在這個MSDN Library page與錯誤的細節左下角的註釋。

+0

這完全是蹩腳的...但是,謝謝,我會盡快嘗試。我終於可以體驗一些.net錯誤了! – cantrem 2010-09-09 19:29:26

+0

...而且的確如此。再次感謝! – cantrem 2010-09-09 20:26:30

+0

我有一個有關RichTextBox錯誤的問題的賞金:http://stackoverflow.com/questions/19256004/richtextbox-selection-bug-when-pressing-control-key你有什麼想法嗎? – 2013-10-17 10:40:00

2

也許事情已經改變,因爲這個問題得到回答,但我有一個更簡單的解決方案:

只需添加richTextBox1.AutoWordSelection = false;的代碼。

聽起來很瘋狂,但在屬性框中將其設置爲false不起作用。 您必須在代碼中執行該操作,即使該屬性已經是錯誤的。 然後它的工作!