有三个窗体A B C
窗体A是 MDI 主窗体, 窗体 B 和C 都是被A show出来的, 现在B窗体如何给C窗体中的TextBox传值?(C窗体主实现日志显示功能)。 B和C是没有父子关系的。 网上搜索了一大堆都是父子关系的窗体传值。求大神给点代码解决问题。
------解决思路----------------------
窗体B和C本身只是同处于一个应用程序,并无直接关联,我认为把窗体A作为中介比较合适.
窗体A代码:
public event Action<string> OnText;
public void TiggerText(string obj)
{
if (OnText != null)
{
OnText(obj);
}
}
窗体B代码:
(this.ParentForm as FormA).TiggerText("test string");
窗体C代码:
private void FormC_Load(object sender, EventArgs e)
{
MessageBox.Show(this.ParentForm.Name);
(this.ParentForm as FormA).OnText += new Action<string>(FormC_OnText);
}
private void FormC_FormClosed(object sender, FormClosedEventArgs e)
{
(this.ParentForm as FormA).OnText -= new Action<string>(FormC_OnText);
}
void FormC_OnText(string obj)
{
textBox1.Text = obj;
}