使用C#在WinForm中传递MDI Child之间的值

时间:2010-03-14 06:56:44

标签: mdichild

我有一个MDI Parent,包含一个MenuStrip。当我点击其中一个菜单时,会同时显示两个子表单。

我的一个ChildForm上有 TextBox 发送 按钮。当我在TextBox中键入内容并单击发送 按钮时,我需要在我的第二个子表单的TextBox中显示该值。

我所做的是,我在第二个子窗体中编写了一个公共函数,并尝试通过在发送按钮单击事件上创建第二个窗体的对象来调用它。当我在该公共函数中放置断点时,我发现控件正在流过该公共函数,并且按下了“发送”按钮。但是不显示传递的值。并且,我知道这不是标准的方法。

任何帮助示例脚本?感谢。

2 个答案:

答案 0 :(得分:0)

我可能会误解您的问题,但似乎在您的“发送”按钮的Click事件中,您正在创建SecondForm的新实例并调用其功能。如果您在此处创建表单的新实例,那么它与已经位于您的MDI父表单中的表单的实例不同(这就是为什么似乎没有发生任何事情的原因)。

您需要做的是获取对MDI父表单中已有的SecondForm实例的引用,并调用公共方法。您可以通过父表单的MdiChildren集合获取对第二个表单的引用,如下所示:

SecondForm f2 = (SecondForm)this.MdiChildren[1]; // second form in collection
f2.PublicMethod();

答案 1 :(得分:0)

感谢您的回复。

我尝试了你的代码,但却给出了一个错误:索引超出了数组的范围。

我稍微更改了代码,使其正常工作,如下所示:

SecondForm f2= (SecondForm)this.MdiParent.MdiChildren[1];
        f2.PublicMethod(some_value_to_pass);

感谢您的帮助。 : - )