2017-10-16 7 views
1

これは多分単純ですが、私はそれを釘付けできません。
私は、n mdiの子を持つMdiコンテナからのfromとwinフォームアプリケーションを持っています。 ActiveMdiChildの設定方法は?
たとえば、4つのMDIチャイルド(0,1,2,3)があり、それぞれに適切なデータを渡したいのですが、アクティブな人だけがデータを取得します..アクティブなmdiの子を変更するには?

答えて

1

特定のMDI子、あなたはActivateMdiChild MDIの親のメソッドを使用して、アクティブにするために、子を渡すことができます。たとえば、次のように

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

ActivateMdiChild (Form)

フォームのMDI子をアクティブにします。

フォームパラメータが既にアクティブなMDI子フォームの場合は、 ActivateMdiChildメソッドが返されます。 formがnullでない場合、 はアクティブなMDI子フォームに設定されます。フォームパラメータが であるかどうかにかかわらず、ActivateMdiChildMdiChildActivateイベントを発生させます。

+0

私は、これはBlockingCollectionの配列が反復され、各子に適切なBCを渡そうとするマルチスレッド方法のためだと思います....私は得ます:クロススレッド操作有効ではありません:コントロール ''は、作成されたスレッド以外のスレッドからアクセスされました。 – John

+0

それはまったく別の質問です。私は答えを手つかずで清潔に保つことを好みます。しかし、あなたがUIスレッドとは別のスレッドからメソッドを呼び出すときは、 'this.ActivateMdiChild(this.MctiChildren [0]);}));' –

+0

First 2つの[WinFormsタグの頻繁な質問](https://stackoverflow.com/questions/tagged/winforms?sort=frequent)は、別のスレッドからUIを更新しています。 –

0

あなたがこれを行うことができます。これは、あなたのacitvemdichildとして設定し、その後チェックされている形式であれば文がチェックする場合

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

を子供が異なるフォーム名を持っている場合は、あなただけ持つことができます。

+0

私はActiveMdiChildを探していません...それを変更しようとしています.. – John

+0

mdiの子は異なるフォーム名を持っていますか?または時には彼らは同じですか? –

+0

作成中に異なる名前が割り当てられています... – John

関連する問題