2017-10-16 59 views
1

嗯,这可能很简单,但我不能钉它。
我有一个胜利形式的应用程序与作为Mdi容器与ñ mdi孩子。 如何设置ActiveMdiChild?
例如,我有4个mdi孩子(0,1,2,3),我想将相应的数据传递给每个人...但只有主动获取数据。如何更改活动的mdi孩子?

回答

1

要激活特定的MDI孩子,你可以使用MDI父母的方法ActivateMdiChild并通过孩子激活。例如:

this.ActivateMdiChild(this.MdiChildren[0]); 

ActivateMdiChild (Form)

激活窗体的MDI子。

如果表单参数已经是活动的MDI子表单,那么方法会简单地返回。如果表单不为空,则它将 设置为活动的MDI子表单。无论表单参数是否为 null,ActivateMdiChild都会引发MdiChildActivate事件。

+0

不工作....我猜是因为这里面的一个多线程方法,其中一个BlockingCollection数组被迭代,我尝试将适当的BC传递给每个孩子....我得到:跨线程操作无效:从其创建的线程以外的线程访问控制。 – John

+0

这完全是一个不同的问题,我宁愿保持答案不变和干净。但是当你从不同于UI线程的线程调用方法时,可以使用'this.Invoke(new Action(()=> {this.ActivateMdiChild(this.MdiChildren [0]);}));' –

+0

First两个[WinForms标签的常见问题](https://stackoverflow.com/questions/tagged/winforms?sort=frequent)回答从另一个线程更新UI。 –

0

你可以这样做:如果孩子有不同形式的名称

foreach (Form frm in this.MdiChildren) 
     { 
      if (frm is Form1) 
      { 
       Form frmChild = this.ActiveMdiChild; 
       frmChild .Show(); 
      } 
     } 

,你可以有,如果查询语句,如果这是你正在检查,然后将它设置为acitvemdichild形式。

+0

我不是在寻找ActiveMdiChild ...我正在寻找改变它.. – John

+0

是否mdi孩子有不同的表格名称?或者有时他们是一样的? –

+0

他们在创作过程中被分配了不同的名字... – John