winform、RichtextBox控件实现循环查找关键字向上查找,向下查找,全字匹配以及区分大小写

查找起始点又光标所在位置开始搜索,向下查找到文章的末端会提示搜索到了起始点,如果再次点击查找下一个按钮则从文章的始端继续搜索循环下去(向上搜索反之),我发现搜索的时候如果最后字段为搜索内容则出现了无法循环查找的问题,所以我增加了处理该问题的代码段,以下代码段有些判断是我在父窗口和子窗体之间的调用判断,可以将之无视。 

        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);//不区分大小写并且不全字
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值