private void okButton_Click(object sender, EventArgs e) { if (!isNewStrEnable || !isOldStrEnable) { MessageBox.Show("请输入内容!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } int index = cf.FindText(this.oldStr.Text, 0, RichTextBoxFinds.None); if (index == -1) { MessageBox.Show("未找到需要替换的内容,请检查输入!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } cf.ReplaceText(this.oldStr.Text, this.newStr.Text); MessageBox.Show("替换完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }
/* * 查找下一个按钮实现方法 * 由于反向查找方法所需要的index与正向查找需要的index的变化是不同的 * 正向查找是改变开始的idnex,反向查找是改变结尾的index */ private void nextFind_Click(object sender, EventArgs e) { RichTextBoxFinds finds = RichTextBoxFinds.None; //枚举默认值 if (isMatchCaps) //如果开启了匹配大小写 { finds = RichTextBoxFinds.None | RichTextBoxFinds.MatchCase; } if (isMatchWords)//如果开启了全词匹配 { finds |= RichTextBoxFinds.WholeWord; } if (isReverse)//如果开启了反向查找 { finds |= RichTextBoxFinds.Reverse; } if (i == 0 && tempi == 0)//反向查找查找到了最开头,判断是否开启了循环查找,如果未开启则提示查找到头了。 { if (!isCircle) { MessageBox.Show("查找也是有底线的!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } if (i >= cf.getText().Length)//正向查找查找到文件结尾之后,判断是否开启了循环查找 { if (!isCircle) { MessageBox.Show("查找也是有底线的!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } tempi = cf.FindText(this.textfind.Text, i, finds); //调用子窗体查找函数查找指定内容 if (isReverse) //如果开启了反向查找,设置index的变化方法 { if (tempi != -1) //就是一直查找到内容,查找不到内容会返回1,richtextbox的查找函数文件的末尾和开头如果都能匹配到查找的内容,不会返回-1,所以要在前面定义两个if判断来提示用户 { i = tempi; //让每次查找的结尾都为上一次查找到的index(0,0的情况前面进行了if判断提示 } else if (tempi == -1) //如果没有查找到内容,或者在限定的范围内没有找到匹配项 { if (i == 0) //如果当前是在全文中都没有找到内容,就提示没有匹配项 { MessageBox.Show("没有查到相关文本内容!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else//如果是限定范围内没有找到匹配项 { if (isCircle)//又开启了循环查找的话 { i = 0; //那就重新重头开始查找 tempi = cf.FindText(this.textfind.Text, i, finds); i = tempi; //设置前一个结果的index为搜索范围的结尾 } else if (!isCircle) //没有开启循环查找,提示查找到结尾了 { MessageBox.Show("查找也是有底线的!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } } else//正向查找 { if (tempi != -1)//就是一直查找到内容,查找不到内容会返回1,richtextbox的查找函数文件的末尾和开头如果都能匹配到查找的内容,不会返回-1,所以要在前面定义两个if判断来提示用户 { i = tempi + 1; //设置下一个查找范围为上一个查找到的index的后一位 } else if (tempi == -1) //如果没有查找到内容,或者在限定的范围内没有找到匹配项 { if (i == 0) //如果当前是在全文中都没有找到内容,就提示没有匹配项 { MessageBox.Show("没有查到相关文本内容!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else//如果是限定范围内没有找到匹配项 { if (isCircle)//如果开启了循环查找 { i = 0; //那就重新重头开始查找 tempi = cf.FindText(this.textfind.Text, i, finds); i = tempi + 1; //设置下一个查找范围为上一个查找到的index的后一位 } else if (!isCircle) //没有开启循环查找,提示查找到结尾了 { MessageBox.Show("查找也是有底线的!"); } } } } }