C# richtextbox.find并选择重复文本
我目前有一个用于显示长字符串的富文本框。我使用以下代码选择字符串中的“重要”项列表,以粗体显示C# richtextbox.find并选择重复文本,c#,winforms,.net-4.0,C#,Winforms,.net 4.0,我目前有一个用于显示长字符串的富文本框。我使用以下代码选择字符串中的“重要”项列表,以粗体显示 foreach (string item in selectionList) { if (item.Length != 0) { int charStart = richTextBox.Find(item); richTextBox.SelectionFont = selectedFont; richTextBox.Sel
foreach (string item in selectionList)
{
if (item.Length != 0)
{
int charStart = richTextBox.Find(item);
richTextBox.SelectionFont = selectedFont;
richTextBox.Select(charStart, item.Length);
}
}
如果文本中出现重复项,我想知道选择重复项的最有效方法。例如(本例中用大写字母突出显示的文本)“我想点一些汉堡、薯条和薯条”
这只是示例数据,我使用的数据中有一些重复数据,因此我确实需要能够处理这种情况。
(这是与此相同的查询:但在C#中)
当前,该项在selectionList中出现两次,但my code在richTextBox中仅找到该词的第一个实例,而最后一个实例未突出显示。我使用C#和.NET4.0在VS2013中工作
非常感谢,
Anya在循环中调用Find(),直到返回-1为止。请注意,循环中的调用从最后找到的位置+1开始:
foreach (string item in selectionList)
{
if (item.Length != 0)
{
int charStart = richTextBox.Find(item, RichTextBoxFinds.None);
while (charStart != -1)
{
richTextBox.SelectionFont = selectedFont;
richTextBox.Select(charStart, item.Length);
charStart = richTextBox.Find(item, charStart + 1, RichTextBoxFinds.None);
}
}
}
我想到了这个,但我真的在这里寻找效率。有人能把它做得更好吗
if (item.Length != 0)
{
if (!richTextBox.SelectedText.Contains(item))
{
int charStart = richTextBox.Find(item);
richTextBox.SelectionFont = selectedFont;
richTextBox.Select(charStart, item.Length);
}
else
{
int charStart = richTextBox.Find(item);
charStart = richTextBox.Find(item, charStart + item.Length, RichTextBoxFinds.None);
richTextBox.SelectionFont = selectedFont;
richTextBox.Select(charStart, item.Length);
}
}
可能是重复的,看起来很棒!除了我需要选择短语而不是单个单词。而且,仔细看,这个问题是问如何找到重复的,我使用一个列表来保存我的项目,可以很容易地找到重复的项目,我现在需要知道最有效的方法来选择文本中的所有实例,而不仅仅是第一个。实际上,如果能够在文本框中选择每个副本,而不需要选择列表中的副本,那就太好了。SelectionList=(burgers,chips)如果能够自动选择每个单词的每个实例,那就太好了。看起来这是一件正确的事情,但是如果这个特定的代码只能找到一个实例,它会导致无限循环!?。。。不,它只适用于一个实例。我测试过了。当找不到更多实例时,对Find()的第二次调用将返回-1。让我看看你的实现。。。