查找起始点又光标所在位置开始搜索,向下查找到文章的末端会提示搜索到了起始点,如果再次点击查找下一个按钮则从文章的始端继续搜索循环下去(向上搜索反之),我发现搜索的时候如果最后字段为搜索内容则出现了无法循环查找的问题,所以我增加了处理该问题的代码段,以下代码段有些判断是我在父窗口和子窗体之间的调用判断,可以将之无视。
public int len1 = 0;
public int len2 = 0;
public int findlen = 0;
public int flag = 0;
public bool initfindindex = true;
//mySon和myGreat_Great_Great_Grandson是子窗口,bjk是richtextbox控件,tabcl是选项页
public void find_data()//查找关键字
{
if (mySon.tabcl.TabCount != 0)//这里判断我的选项页是否为空,请无视这个判断
{
if (initfindindex)//变量initfindindex判断是否重新输入搜索关键字,或者选择不同查找方式
{
len1 = mySon.bjk[mySon.tabcl.SelectedIndex].SelectionStart;//获取光标所在文本位置,在该位置向上或向下搜索
len2 = mySon.bjk[mySon.tabcl.SelectedIndex].SelectionStart;
initfindindex = false;
}
if (myGreat_Great_Great_Grandson.radioButton2.Checked)//向下查找
{
mySon.bjk[mySon.tabcl.SelectedIndex].Focus();//控件获取焦点
if (myGreat_Great_Great_Grandson.checkBox1.Checked)//全字匹配单选框是否按下
{
if (myGreat_Great_Great_Grandson.checkBox2.Checked)//全字匹配和区分大小写单选框是否同时按下
{
findlen = mySon.bjk[mySon.tabcl.SelectedIndex].Find(myGreat_Great_Great_Grandson.richTextBox1.Text, len1, RichTextBoxFinds.MatchCase | RichTextBoxFinds.WholeWord);//全字匹配并且区分大小写查找
}
else//只按下全字匹配单选框
{
findlen = mySon.bjk[mySon.tabcl.SelectedIndex].Find(myGreat_Great_Great_Grandson.richTextBox1.Text, len1, RichTextBoxFinds.WholeWord);//全字匹配查找
}
}
else if (myGreat_Great_Great_Grandson.checkBox2.Checked)//区分大小写单选框是否按下
{
findlen = mySon.bjk[mySon.tabcl.SelectedIndex].Find(myGreat_Great_Great_Grandson.richTextBox1.Text, len1, RichTextBoxFinds.MatchCase);//区分大小写查找
}
else
{
findlen = mySon.bjk[mySon.tabcl.SelectedIndex].Find(myGreat_Great_Great_Grandson.richTextBox1.Text, len1, RichTextBoxFinds.None);//不区分大小写并且不全字