最近自己写了一个仿Windows的记事本程序,上下查找部分的功能不好实现,所以后面自己编写了一个查找函数。。。。。。
//向下查找
public void down(RichTextBox text,string test,bool check)
{
string strDown = "";
int intCount = 0,i=0;
if(check==false) //不区分大小写
{
if (text.SelectedText.ToUpper() == test.ToUpper()) //如果选中的文本等于需要替换的文本
{
//从光标所在位置后一位开始截取后面的所有字符
strDown = text.Text.Substring(text.SelectionStart + 1, text.Text.Length - (text.SelectionStart+1));
}
else
{
//从光标所在位置开始截取后面的所有字符
strDown = text.Text.Substring(text.SelectionStart, text.Text.Length - text.SelectionStart);
}
}
else if (check == true) //区分大小写
{
if (text.SelectedText == test) //如果选中的文本等于需要替换的文本
{
//从光标所在位置后一位开始截取后面的所有字符
strDown = text.Text.Substring(text.SelectionStart + 1, text.Text.Length - (text.SelectionStart+1));
}
else
{
//从光标所在位置开始截取后面的所有字符
strDown = text.Text.Substring(text.SelectionStart , text.Text.Length - text.SelectionStart);
}
}
intCount = text.Text.Length - strDown.Length; //存放除截取的字符数以外的字符数
// i + test.Length(要查找的字符的长度) 的长度不得大于截取字符数的长度
for (i = 0; i+test.Length <= strDown.Length ; i++)
{
if (check == true) //区分大小写
{
if (strDown.Substring(i, test.Length) == test) //截取的字符等于要查找的字符
{
text.SelectionStart = i+intCount; //设置光标的起始位置
text.SelectionLength = test.Length; //设置文本的选定字符数
return;
}
}
else if (check == false) //不区分大小写
{
if (strDown.Substring(i, test.Length).ToUpper() == test.ToUpper()) //截取的字符等于要查找的字符
{
text.SelectionStart = i+intCount; //设置光标的起始位置
text.SelectionLength = test.Length; //设置文本的选定字符数
return;
}
}
}
MessageBox.Show("找不到/"" + test + "/""); //找不到则提示
}
//向上查找
public void up(RichTextBox text, string test, bool check)
{
string strDown = "";
int i = 0;
if (check== false) //不区分大小写
{
if (text.SelectedText.ToUpper() == test.ToUpper()) //文本选定的内容等于要查找的内容
{
strDown = text.Text.Substring(0, text.SelectionStart-1); //从开头开始向后截取到光标所在位置的前一位
}
else
{
strDown = text.Text.Substring(0,text.SelectionStart); //从头开始向后截取到光标所在的位置
}
}
else if (check== true) //区分大小写
{
if (text.SelectedText == test) //文本选定内容等于要查找的内容
{
strDown = text.Text.Substring(0, text.SelectionStart -1); //从开头开始向后截取到光标所在位置的前一位
}
else
{
strDown = text.Text.Substring(0, text.SelectionStart); //从头开始向后截取到光标所在的位置
}
}
i = 截取的文本长度减去要查找的字符长度 (因为 Substring 是从左往右截取)
for (i = strDown.Length-test.Length; i >=0; i--)
{
if (check == true) //区分大小写
{
if (strDown.Substring(i, test.Length) == test) //截取的内容等于要查找的内容
{
text.SelectionStart = i ; //设置光标所在位置
text.SelectionLength = test.Length; //设置选定的字符数
return;
}
}
else if (check== false) //不区分大小写
{
if (strDown.Substring(i, test.Length).ToUpper() == test.ToUpper()) //截取的内容等于要查找的内容
{
text.SelectionStart = i ; //设置光标所在位置
text.SelectionLength = test.Length; //设置选定的字符数
return;
}
}
}
MessageBox.Show("找不到/"" + test+ "/""); //找不到则提示
}