C# RichTextBox中的两个文本之间行为不一致。请使用子字符串方法选择
我正在开发一个Windows窗体应用程序。我使用C# RichTextBox中的两个文本之间行为不一致。请使用子字符串方法选择,c#,winforms,richtextbox,substring,C#,Winforms,Richtextbox,Substring,我正在开发一个Windows窗体应用程序。我使用RichTextBox.LoadFile方法从文件中加载文本并突出显示部分文本。文件中的文本包含返回字符 假设我想突出显示突出显示。首先,我找到突出显示部分的startIndex和length,然后使用RichTextBox。选择(startIndex,length),并为其添加一些颜色 当我使用SubString方法时,我可以找到正确的文本。但是,当我将相同的startIndex和length值应用于Select方法时,突出显示的部分将成为[sp
RichTextBox.LoadFile
方法从文件中加载文本并突出显示部分文本。文件中的文本包含返回字符
假设我想突出显示突出显示。首先,我找到突出显示部分的startIndex
和length
,然后使用RichTextBox。选择(startIndex,length)
,并为其添加一些颜色
当我使用SubString
方法时,我可以找到正确的文本。但是,当我将相同的startIndex
和length
值应用于Select
方法时,突出显示的部分将成为[space][space][space]highli
。看起来Select
方法考虑了一些返回字符并导致了一些问题
如何解决它?我第一次听说它时,经常使用richTextBox
。尝试使用SubString
在richTextBox.Text
中查找所需的子字符串,而不是文件中的字符串。如果您已经这样做了,请尝试检查substring方法返回的编号,并查看它是否引用了正确的位置
另外,请分享您的代码请,我想看到它为自己。如果是.net问题,那么我需要检查我的工作…我认为您应该使用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中“搜索”特定文本,然后将其高亮显示为红色
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);
}
您知道该文件是否包含通常的windows序列“\r\n”
,即(char)0x0D
,后跟(char)0x0A
,或者每个“return”只包含一个“\r”
或一个“\n”
?您好,杰普。原始文件包含\r
和\n
。这是一个在Windows中处理的文本文件。如果我使用richTextBox.text.Substring(startIndex,length),我可以得到正确的结果。但是如果我使用richTextBox(startIndex,length)。它没有正确选择。它添加了一些空格,就像我在问题中描述的那样。