我有以下功能选择并突出显示文字。
if (startIndex >= 0)
{
FormsRtb.SelectionBackColor = Color.CornflowerBlue;
var selectedTextLength = findContext.TextToFind.Length;
FormsRtb.Select(startIndex, selectedTextLength);
_previoslyFoundTextIndex = startIndex + selectedTextLength;
}
找到EveryTime新文本我需要取消选择并取消高亮显示以前找到的文本。
我在选择新文本之前尝试执行此代码段,但ID没有帮助。
你知道怎么做吗?
FormsRtb.SelectAll();
FormsRtb.SelectionBackColor = Color.White;
FormsRtb.DeselectAll();
答案 0 :(得分:1)
嗯,我认为你做的选择本身不太正确:在
之后0)取消突出显示你应该
1)设置SelctionStart
和SelectionLength
然后
2)设置SelectionBackColor
。
您应该不一直更改RTB本身的SelectionBackColor
(即不先设置选择)..!
if (startIndex >= 0)
{
FormsRtb.SelectAll(); // first we un-highlight
FormsRtb.SelectionBackColor = Color.White; // probably FormsRtb.BackColor is better?
FormsRtb.DeselectAll();
var selectedTextLength = findContext.TextToFind.Length;
FormsRtb.Select(startIndex, selectedTextLength); // now we select..
FormsRtb.SelectionBackColor = Color.CornflowerBlue; //..and only then we highlight
_previoslyFoundTextIndex = startIndex + selectedTextLength;
}