这是我在我的richtextbox 中查找文本并突出显示它的代码:
int start = 0;
int indexOfSearchText = 0;
private void button1_Click(object sender, EventArgs e)
{
int startindex = 0;
if (textBox1.Text.Length > 0)
startindex = FindMyText(textBox1.Text.Trim(), start, richTextBox1.Text.Length);
// If string was found in the RichTextBox, highlight it
if (startindex >= 0)
{
// Set the highlight color as red
richTextBox1.SelectionBackColor = Color.Red;
// Find the end index. End Index = number of characters in textbox
int endindex = textBox1.Text.Length;
// Highlight the search string
richTextBox1.Select(startindex, endindex);
richTextBox1.ScrollToCaret();
// mark the start position after the position of
// last search string
start = startindex + endindex;
}
else
{
MessageBox.Show("0 occurence in richtextbox");
}
}
public int FindMyText(string txtToSearch, int searchStart, int searchEnd)
{
// Unselect the previously searched string
if (searchStart > 0 && searchEnd > 0 && indexOfSearchText >= 0)
{
richTextBox1.Undo();
}
// Set the return value to -1 by default.
int retVal = -1;
// A valid starting index should be specified.
// if indexOfSearchText = -1, the end of search
if (searchStart >= 0 && indexOfSearchText >= 0)
{
// A valid ending index
if (searchEnd > searchStart || searchEnd == -1)
{
// Find the position of search string in RichTextBox
indexOfSearchText = richTextBox1.Find(txtToSearch, searchStart, searchEnd, RichTextBoxFinds.None);
// Determine whether the text was found in richTextBox1.
if (indexOfSearchText != -1)
{
// Return the index to the specified search text.
retVal = indexOfSearchText;
}
}
}
return retVal;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
start = 0;
indexOfSearchText = 0;
}
}
}
问题是,当它到达richtextBox1的末尾时,它并没有从头开始重新启动!我想在到达richtextBox1.text 的末尾后再次循环到开始。