我写了一个真空管交叉引用程序。我不知道如何迭代RichTextBox1来使请求的管值加粗。
搜索6AU8A时的现有输出
Tube Cross1 Cross2 Cross3 Qty Location
6AU8 6AU8A 6BH8 6AW8 2 PM BOX 3
6AU8A 6AU8 6BH8 6AW8 6 BOX 9
6BA8A 6AU8 6AU8A 8AU8A 1 BOX 11
6CX8 6AU8A 6EB8 6GN8 2 BOX 16
6EH5 6AU8A 2081 6AW8A# 1 BOX 19
6GH8 6EA8 6GH8A 6AU8A 2 BOX 23
6GH8A 6GH8 6EA8 6AU8A 10 BOX 22
6GH8A 6GH8 6EA8 6AU8A 5 BOX 23
因此,我需要搜索词的任何出现(在本例中为6AU8A)在粗体。使用VS 2019,Windows应用程序,编译为.NET 4.8.1,在Windows 7 & 10 PC上运行。
public int FindMyText(string text)
{
length = text.Length;
// Initialize the return value to false by default.
int returnValue = -1;
// Ensure that a search string has been specified and a valid start point.
if (text.Length > 0)
{
// Obtain the location of the first character found in the control
// that matches any of the characters in the char array.
int indexToText = richTextBox1.Find(text);
// Determine whether the text was found in richTextBox1.
if (indexToText >= 0)
{
// Return the location of the character.
returnValue = indexToText;
start = indexToText;
}
}
return returnValue;
}
2条答案
按热度按时间thigvfpy1#
调用
Find()
后,该值将被选择(如果存在的话)。然后您可以将字体更改为包含粗体。Find()
函数有一个“Start”位置,它允许您查找下一个匹配项。因此您从0开始,然后加上搜索字符串的长度以获得下一个起始位置。如果返回的值为-1,那么就没有匹配了,你可以停止了。看起来像这样:
以下是它的实际应用:
pkln4tw62#
如果您确实需要为此使用RichTextBox,则可以使用一个简单的Regex来匹配一个或多个 terms,然后使用每个Match的
Index
和Length
属性来执行选择并更改Font和/或其他样式(在此处的代码中,可以选择颜色)将要比对的词汇集合(包含一或多个词汇)传递至方法:
Regex只匹配完整的序列,例如,传递
6GH8
,它不会部分突出显示6GH8A
如果您喜欢部分选择,请删除图案中的两个
\b
边界