用委托就可以实现
在子窗体里面定义一个委托
在父窗体按钮里面实现委托就行
子窗体:
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); }
能具体说说嘛?
追答form1中if(form2.showdialog() == dialogResult.ok)
{
From2数据处理
}
谢谢你,我已经解决了。