예제 #1
0
        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);
        }
예제 #2
0
        /*
         * 查找下一个按钮实现方法
         * 由于反向查找方法所需要的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("查找也是有底线的!");
                        }
                    }
                }
            }
        }