【发布时间】:2018-11-02 10:02:05
【问题描述】:
我有一个读取文本文件的WinForm 应用程序。它逐行读取整个文件并在行首有分隔符时生成RadioButton。
因此,"|A Topic" 产生一个名为 A Topic 的 RadioButton。
在运行时,用户选择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代码。