C#程序设计:如何在richtextbox内查找下一个

C#程序设计:如何在richtextbox内查找下一个

哎,为了完成C#程序设计作业,我也是拼了老命。在百度上找了半天,感觉大家的查找下一个跟我想的还是不太一样。在参考众多大神的答案后,我自己编了这个程序。

        public static int start=0;
        private void button3_Click(object sender, EventArgs e)
        {
            int end=0;
            richTextBox1.Select();
            richTextBox1.SelectionBackColor = Color.White;
            start = richTextBox1.Text.IndexOf(textBox1.Text, start, richTextBox1.TextLength-start);
            end = richTextBox1.Text.LastIndexOf(textBox1.Text);
            if(start>=0&&start<=end)
            {
                richTextBox1.Find(textBox1.Text, start, end, RichTextBoxFinds.MatchCase);
                richTextBox1.SelectionBackColor = Color.AliceBlue;
                start = start + textBox1.TextLength;
            }
            else
                MessageBox.Show("查找失败");
        }

好吧,的确特别简单,但是主要有用啊。我想实现的是类似word和记事本里面的查找,就是说你打开文件之后,依次找到关键词。
这里用richtextbox这个神仙控件。说实话我真的觉得写C#程序设计像哥伦布发现新大陆,每次看到一个函数,都觉得自己好无知。
ok,下面稍微说说这个程序咋实现的。
其实这个查找下一个程序,主要问题就是更新每次查找的起始位置。举个栗子,如果abcdeabs中间,你想查找a,那就用一个find函数,这样就能找到第0个位置就是a。
但是你要是想找下一个a呢?你就必须先设定一个全局变量start作为索引,让这个start随着你的要求不断后移,如果把它放到0后面去,这样你下次查找的时候才能找到后面的这个在第5位的a。

另外捏,比较重要的函数就是这个

start = richTextBox1.Text.IndexOf(textBox1.Text, start, richTextBox1.TextLength-start);

indexof这个函数可以从start查找n个字符,那我应该找几位呢?毕竟这个文本的长度我没法控制啊,可能下一个关键字紧跟着出现,也可能到最后才出现。那咋办呢?
其实如果不追求啥的话,直接设置成 richTextBox1.TextLength就可以,也就是说你咋样都在这篇文本里面,所以n= richTextBox1.TextLength总是没错的。(不过我没试在最后的时候会不会报错。)

那为了提高效率,并且防止报错,我就设置n= richTextBox1.TextLength-start,ok,这样我就保证我的查找都在文本内部。

最后展示一下页面,文章用的是郁达夫的《秋》
在这里插入图片描述

然后捏,我查找“秋”,并且查找下一个:
在这里插入图片描述
反正差不多就这样,这边记录一下我的伟大思考哈哈哈哈哈哈。

  • 5
    点赞
  • 2
    评论
  • 5
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 2 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

dandingshaonv

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值