新手求教,如何实现类似于Word中的搜索功能?

lhw7791086 2013-10-06 08:03:06
现已经实现将某一txt文件内容读入并显示到TextBox1中,现在要实现在另外一个textBox2中输入文字,然后搜索出textBox1中对应的文字并标红显示。
我想的是用正则表达式实现:
Regex expression_search = new Regex(textBox2.Text);  //不知道括号里能否这样写?
Match m_Re = expression_search.Match(textBox1中的内容,逐行读取); //这里将textBox1逐行读取,求教如何实现textbox中的内容逐行读取?
if (m_Re.Success)
{
//匹配成功,将该符合的文字标红,但不知如何实现?
// XXXXXX
}
...全文
225 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2013-10-07
  • 打赏
  • 举报
回复
引用 3 楼 lhw7791086 的回复:
[quote=引用 2 楼 caozhy 的回复:] 注意,多次按按钮,可以继续搜索。
谢谢老师,已实现。但如果我想进一步实现这样的效果:搜索之后,符合匹配的所有文字都被标记出来选中,而不是一个一个依次出现,这样可以实现吗?[/quote] 因为文本框不支持多重的高亮,需要重绘了。 思路参考:http://bbs.csdn.net/topics/390588871
lhw7791086 2013-10-07
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
注意,多次按按钮,可以继续搜索。
谢谢老师,已实现。但如果我想进一步实现这样的效果:搜索之后,符合匹配的所有文字都被标记出来选中,而不是一个一个依次出现,这样可以实现吗?
threenewbee 2013-10-06
  • 打赏
  • 举报
回复
注意,多次按按钮,可以继续搜索。
threenewbee 2013-10-06
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int n = textBox2.Text.IndexOf(textBox1.Text, textBox2.SelectionStart + textBox2.SelectionLength);
            if (n == -1)
                n = textBox2.Text.IndexOf(textBox1.Text, 0);
            if (n >= 0)
            {
                textBox2.SelectionStart = n;
                textBox2.SelectionLength = textBox1.Text.Length;
                ActiveControl = textBox2;
            }
        }
    }
}
在界面上放两个文本框,一个按钮。 在第一个文本框中输入“123” 在第二个文本框中输入“123 1234 123 12 1234 234 123” 点按钮。

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧