永发信息网

C# 文本查找

答案:1  悬赏:40  手机版
解决时间 2021-05-18 02:26
  • 提问者网友:蓝莓格格巫
  • 2021-05-17 08:51

用C# 做了个程序查找 目的是这样的。

主窗口:form1     RichTextBox1

子窗口: form2  button1 TextBox1

希望在查找的时候点击button1  以TextBox1 内容来查找主窗口里RichTextBox1的内容 并标记 具体代码如下

 Form1 fm1 = new Form1();
            string searchstr = this.txtSearch.Text.Trim();
            string repstr = txtReplace.Text.Trim();
            if (searchstr != "")//条件不为空
            {
                if (1 == 1)//内容不为空
                {
                    if ((num = fm1.textBox1.Find(searchstr, num, RichTextBoxFinds.MatchCase)) == -1)
                    {
                        MessageBox.Show("没有找到结果!");
                        num = 0;
                    }//没找到
                    else
                    { //选中文件
                        fm1.textBox1.Select(num, searchstr.Length);

                        fm1.textBox1.SelectionColor = Color.Red;

                        //找到了查找下一个
                        num = num + searchstr.Length;
                        MessageBox.Show("查找完成!");

                    }
                }
            }
            else
            {
                MessageBox.Show("请输入查询条件");
            }

主窗口内RichTextBox的 Modifiers属性设置为Public 但是测试的时候无论输入什么内容(RichTextBox有内容) 都提示的是 没有找到该内容。感觉是子窗口得到的RichTextBox.text 里什么内容也没有。

但是把RichTextBox和查找程序放在一个窗口里又能很好的查找。

请问下大家·这个程序要怎么修改才能实现我这个功能啊。谢谢了

最佳答案
  • 五星知识达人网友:冷風如刀
  • 2021-05-17 09:43

代码虽使用Form1 fm1 = new Form1();产生了一个新实例,但并不是主窗体的实例,fm1.textBox1当然是空字符串了


解决方法要看你这段代码放在哪个位置,你没说我只能猜了。


我猜是在form2里,你的form2是在form1的某个事件中new&show出来的吧?那你就在form1的事件中new form2的时候将主窗体的实例this传进来,粗体内容:


class form1{


//某事件


{ ... Form2 fm2=new Form2();fm2.fm1=this; ...  fm2.Show(); }


}


class form2{


internal form1 fm1;


void button_click_event(...){ string searchstr = this.txtSearch.Text.Trim();... }


}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯