我有一個富文本框,併爲其實施了搜索選項。當用戶搜索字符串時,所有匹配都會以黃色背景突出顯示。我希望當用戶再次按下搜索按鈕時,在新的搜索開始之前,所有以前的亮點都將被刪除。從富文本框中的多個位置刪除背色
我發現了兩種方式來做到這一點: 1.選擇所有文字,然後選擇背景色是默認的。 2.刪除文本框中的所有文本,然後再放回去。
這兩種方式的工作,但是當我使用它們看起來不自然。 那麼,有沒有另外一種方法可以刪除文本中的所有亮點?
我使用.NET Framework 4和我在C#編寫。
我有一個富文本框,併爲其實施了搜索選項。當用戶搜索字符串時,所有匹配都會以黃色背景突出顯示。我希望當用戶再次按下搜索按鈕時,在新的搜索開始之前,所有以前的亮點都將被刪除。從富文本框中的多個位置刪除背色
我發現了兩種方式來做到這一點: 1.選擇所有文字,然後選擇背景色是默認的。 2.刪除文本框中的所有文本,然後再放回去。
這兩種方式的工作,但是當我使用它們看起來不自然。 那麼,有沒有另外一種方法可以刪除文本中的所有亮點?
我使用.NET Framework 4和我在C#編寫。
這裏的部分是寫在半C#psedocode的想法希望它有助於
List<Match> matches = new List<Match> { };
void Highlight(string SearchString,Color highlightColor)
{
foreach (var match in matches)
{
UpdateMatchBgColor(richTextBox1,match.pos,match.length,match.color);
}
matches = SearchMatches(SearchString);
foreach (var match in matches)
{
UpdateMatchBgColor(richTextBox1,match.pos,match.length,highlightColor);
}
}
編輯: 嘗試這樣的: http://www.dotnetcurry.com/ShowArticle.aspx?ID=146 EDIT2:
作品真棒!
你正在尋找的功能是多重選擇,是這樣的:
richTextBox1.Select(4, 5);
richTextBox1.Select(29, 2);
richTextBox1.Select(95, 12);
,但仍然有選擇的先前的選擇。
壞消息,因爲多選擇不是內置的功能RichTextBox的,但我想你可能會做一些技巧來達到這一點:
選擇一部分進行選擇突出(後使其正常取消選擇時)和錄製開始&結束索引,並與第二和第三多的同...
希望它可以幫助
試試這個代碼:
richTextBox1.SelectAll();
richTextBox1.SelectionBackColor = System.Drawing.Color.White;
richTextBox1.DeselectAll();
這裏白色將是文字的背景色,然後纔會慢慢有黃色高亮
有一個很簡單的解決方案,以消除你已經創建亮點的多個實例不會干擾所有其他高光,其他格式等:
使用獨特的高光顏色沒有人可能會使用例如
hColor as color = Color.FromArgb(255, 255, 1)
然後從你的富文本使用刪除亮點的所有實例在顏色:
Dim t As String = TextBox1.Rtf
t = t.Replace("\red255\green255\blue1;", "\red255\green255\blue255;")
TextBox1.Rtf = t
這將替換您的特殊高亮顏色相同的顏色作爲背景,在這種情況下Color.FromArgb(255, 255,255),而不必搜索任何突出顯示的詞或實現任何其他代碼。
再見亮點...
我希望有一個更簡單的方法,但我想沒有,所以我會寫一些類似的東西,謝謝。 – Guy
@Guy喜的傢伙,如果在stackoverflow中的答案可以幫助你,你應該把它標記爲有用(1up),如果它解決了你的問題,你應該將它作爲選定的答案 – Nahum
在聲望1,他不能投票,但標記爲答案會很好 – slawekwin