Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RichTextBox中的两个文本之间行为不一致。请使用子字符串方法选择_C#_Winforms_Richtextbox_Substring - Fatal编程技术网

C# RichTextBox中的两个文本之间行为不一致。请使用子字符串方法选择

C# RichTextBox中的两个文本之间行为不一致。请使用子字符串方法选择,c#,winforms,richtextbox,substring,C#,Winforms,Richtextbox,Substring,我正在开发一个Windows窗体应用程序。我使用RichTextBox.LoadFile方法从文件中加载文本并突出显示部分文本。文件中的文本包含返回字符 假设我想突出显示突出显示。首先,我找到突出显示部分的startIndex和length,然后使用RichTextBox。选择(startIndex,length),并为其添加一些颜色 当我使用SubString方法时,我可以找到正确的文本。但是,当我将相同的startIndex和length值应用于Select方法时,突出显示的部分将成为[sp

我正在开发一个Windows窗体应用程序。我使用
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)。它没有正确选择。它添加了一些空格,就像我在问题中描述的那样。