RichTextBox中的行为不一致.请使用SubString方法进行选择
本文关键字:方法 SubString 行选 选择 请使用 不一致 RichTextBox | 更新日期: 2023-09-27 18:27:56
我正在开发一个Windows窗体应用程序。我使用RichTextBox.LoadFile
方法从文件中加载文本,并突出显示文本的某个部分。文件中的文本包含返回字符。
假设我想突出显示the highlight
。首先,我找到了the highlight
部分的startIndex
和length
,然后使用RichTextBox.Select(startIndex, length)
并给它一些颜色。
当我使用SubString
方法时,我可以找到正确的文本。但当我将startIndex
和length
的相同值应用于Select
方法时,高亮显示的部分变为[space][space][space]the highli
。看起来Select
方法考虑了一些返回字符,并导致了一些问题。
我该如何解决?
我认为您应该使用RichTextBox
:的Find()
方法
int nextStartIndex;
public void Find(string keyword){
int i = richTextBox1.Find(keyword, nextStartIndex, RichTextBoxFinds.None);
if(i != -1) {
nextStartIndex = i + keyword.Length;
}
}
第一次听说它时,我经常使用richTextBox
。尝试使用SubString
在richTextBox.Text
中查找所需的子字符串,而不是文件中的字符串。如果您已经这样做了,请尝试检查子字符串方法的返回数字,看看它是否引用了正确的位置。
另外,请分享你的代码,我想亲眼看看。如果这是.net的问题,那么我需要复习我的工作。。。
这就是我如何在RichTextBox中"搜索"特定文本,然后将其突出显示到RED
private void ColoritRed(RichTextBox rtb, string StringToHighlight)
{
int pos = 0;
string searchText = StringToHighlight;
pos = rtb.Find(searchText);
while (pos != -1)
{
if (rtb.SelectedText == searchText)
{
this.ActiveControl = rtb;
rtb.SelectionStart = pos;
rtb.SelectionLength = searchText.Length;
rtb.SelectionColor = Color.Red;
}
pos = rtb.Find(searchText, pos + 1, RichTextBoxFinds.MatchCase);
}