C#中关闭子窗口的同时刷新父窗口的办法?

在子窗口的textbox中输入一个值之后点击确认,然后在父窗口的richtextbox中查找这个值,应该怎么实现?

第1个回答  2014-03-19

用委托就可以实现

在子窗体里面定义一个委托

在父窗体按钮里面实现委托就行 

子窗体:

public delegate void PrintInfoShow(string text);

        public event PrintInfoShow PrintEvent;

        private void button1_Click(object sender, EventArgs e)

        {

            if (PrintEvent!=null)

            {

                PrintEvent(textBox1.Text);

            }

        }

父窗体:

 private void button2_Click(object sender, EventArgs e)

        {

            Form1 fo = new Form1();

            fo.PrintEvent+=new Form1.PrintInfoShow(fo_PrintEvent);

            fo.ShowDialog();


        }


        void fo_PrintEvent(string text)

        {

            this.textBox2.Text = text;

        }


追问

还有其他方法吗?这种貌似不行啊。

追答

你是把子窗体的值传到父窗体里面? 哦 我明白了 你的意思就是从一堆字符串里面查找你输入的值?

追问

对对对,就是在子窗口里输入你要查找的字符,然后在父窗口的richtextbox里面查找。
大神,快教教我

追答

void fo_PrintEvent(string text)
{
selectInfo(text);
}
private void selectInfo(string num)
{
richTextBox1.Refresh();
//首先找到要查找字符串的起始位置
int a = this.richTextBox1.Find(num);
//判断一下是否找到,如果找不到那么开始位置是-1
if (a >= 0)
{
richTextBox1.SelectionStart = a;
//得到字符串的长度
richTextBox1.SelectionLength = num.Length;
//然后就可以改变这个字符串的颜色
richTextBox1.SelectionColor = Color.Red;
}
}
这样就实现你的要求了

追问

查找我会,但是我怎么在关闭子窗口的时候在父窗口里实现查找嘞。我已经把值传到了父窗口里,我关闭子窗口的时候他不能自动查找,需要刷新父窗口,这个怎么办?

追答

我这个方法就是啊 不用你刷新 结合上面的代码就是个整体
public delegate void PrintInfoShow(string text);
public event PrintInfoShow PrintEvent;
private void button1_Click(object sender, EventArgs e)
{
if (PrintEvent!=null) { PrintEvent(textBox1.Text); } this.Close();
}
父窗体:

private void button2_Click(object sender, EventArgs e)
{
Form1 fo = new Form1(); fo.PrintEvent+=new Form1.PrintInfoShow(fo_PrintEvent);
fo.ShowDialog();
}
void fo_PrintEvent(string text) { selectInfo(text); }

本回答被提问者采纳
第2个回答  2014-03-19
showDialog();追问

能具体说说嘛?

追答

form1中if(form2.showdialog() == dialogResult.ok)
{
From2数据处理
}

追问

谢谢你,我已经解决了。

相似回答