【问题标题】:Inconsistent behaviour between in RichTextBox.Select with SubString methodRichTextBox.Select 与 SubString 方法之间的行为不一致
【发布时间】:2013-08-17 09:01:45
【问题描述】:

我正在开发一个 Windows 窗体应用程序。我使用RichTextBox.LoadFile 方法从文件中加载文本并突出显示文本的某些部分。文件中的文本包含返回字符。

假设我想突出显示the highlight。首先我找到the highlight部分的startIndexlength,然后使用RichTextBox.Select(startIndex, length)并给它一些颜色。

当我使用SubString 方法时,我可以找到正确的文本。但是当我将startIndexlength 的相同值应用于Select 方法时,突出显示的部分变为[space][space][space]the highli。看起来Select 方法考虑了一些返回字符并导致了一些问题。

我该如何解决?

【问题讨论】:

  • 您知道文件是否包含通常的 windows 序列"\r\n",即(char)0x0D 后跟(char)0x0A,或者每个“返回”只包含单个"\r" 或单个"\n" ?
  • 你好杰普。原始文件包含\r\n。它是在 Windows 中处理的文本文件。

标签: c# winforms richtextbox substring


【解决方案1】:

我认为你应该使用RichTextBoxFind()方法:

int nextStartIndex;
public void Find(string keyword){
   int i = richTextBox1.Find(keyword, nextStartIndex, RichTextBoxFinds.None);
   if(i != -1) {
      nextStartIndex = i + keyword.Length;          
   }
}

【讨论】:

    【解决方案2】:

    我第一次听说它,我经常使用richTextBox。尝试使用SubStringrichTextBox.Text 上找到您想要的子字符串,而不是文件中的字符串。如果您已经这样做了,请尝试检查 substring 方法的返回编号,看看它是否引用了正确的位置。

    另外,请分享您的代码,我想亲眼看看。如果这是一个 .net 问题,那么我需要检查我的工作......

    【讨论】:

    • 如果我使用richTextBox.Text.Substring(startIndex, length),我可以得到正确的结果。但是如果那时我使用richTextBox(startIndex,长度)。它没有正确选择。它添加了一些空格,就像我在问题中描述的那样。
    【解决方案3】:

    这就是我在 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);
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-30
      • 2019-05-28
      • 2021-07-19
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多