【问题标题】:How to change the color of text from a certain char to the end of the line如何将文本的颜色从某个字符更改为行尾
【发布时间】:2018-11-02 10:02:05
【问题描述】:

我有一个读取文本文件的WinForm 应用程序。它逐行读取整个文件并在行首有分隔符时生成RadioButton
因此,"|A Topic" 产生一个名为 A TopicRadioButton

在运行时,用户选择RadioButton,应用程序会在文本文件中找到该行,然后读取所有文本直到下一个分隔符,并将其放入RichTextBox

文本文件的内容是实际的 Visual Basic 代码,我正在寻找一种方法来从代码中描述 cmets。 我正在尝试使用 .Find() 来定位所有表示评论的撇号。

找到评论后,如何将选择扩展到该行的末尾?

Dim index As Integer = 0

While index < RichTxtOut.Text.LastIndexOf("'")
    RichTxtOut.Find("'", index, RichTxtOut.TextLength, RichTextBoxFinds.None)
    RichTxtOut.SelectionColor = Color.Green

    index = RichTxtOut.Text.IndexOf("'", index) + 1
End While

这会使撇号变为绿色,但我如何使该行的其余部分变为绿色。

这里是更新代码 _________________________________________________

Dim indexx As Integer = 0
Dim lines() As String = System.IO.File.ReadAllLines(FILE_NAME)
Dim numOfChars As Integer

While indexx < RichTxtOut.Text.LastIndexOf("'")
    numOfChars = 0

    RichTxtOut.Find("'", indexx, RichTxtOut.TextLength, RichTextBoxFinds.None)

    'count the number of characters after the apostrophe
    For li As Integer = 0 To Lines(RichTxtOut.GetLineFromCharIndex(RichTxtOut.Find("'", indexx, RichTxtOut.TextLength, RichTextBoxFinds.None))).Count - 1
        numOfChars += 1
    Next

    RichTxtOut.Select(RichTxtOut.Find("'", indexx, RichTxtOut.TextLength, RichTextBoxFinds.None), numOfChars)

    RichTxtOut.SelectionColor = Color.Green
    numOfChars = 0
    indexx = RichTxtOut.Text.IndexOf("'", indexx) + 1
End While

但是它仍然无法正常工作。在撇号后的行中找不到正确数量的字符。

有什么建议吗??

【问题讨论】:

  • 你需要从RichTxtOut.Text.LastIndexOf("'") 到 len(RichTxtOut.Text)` 或类似的东西中进行选择。
  • 这会将选择范围从撇号扩展到 RichTxtOut 字段的末尾。从那里开始让一切变成绿色。
  • 如果我创建一个循环读取每个字符并添加到计数器,从撇号开始。如何在循环进入下一行之前停止循环?
  • Dim FirstChar as Interger = [string].IndexOf(CharW(39)) 返回它找到的第一个字符的索引。下一个字符是Dim NextChar as Interger = [string].IndexOf(CharW(39), FirstChar + 1)。然后[RichTextBox].Select(FirstChar, NextChar - FirstChar)。顺便说一句,这是VB.Net 代码。

标签: vb.net winforms


【解决方案1】:

RichTextBox 可能很复杂,因为它们非常强大并且有很多方法可以做事。

有一个示例here 通过一次添加一个单词来设置颜色,并为每个单词设置选择颜色(大概是利用最近添加的单词被选中的事实)。您可以一次添加一行文本,如果第一个(非空格)字符是撇号,则将颜色设置为绿色。

不过,使用选择有点小技巧。 WPF RTB 使用段落和内联对象,类似于 HTML 中的 DIV 和 SPAN。您可以为每个内联设置字体。我不确定winforms是否相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多