0

mdi を使用したアプリケーションがあります。親にいくつかのリンクがあり、クリックすると新しい子フォームが開き、既に開いているフォームが非表示になります。子が既に開いているかどうかを確認するにはどうすればよいですか?

A little scenario:  
link 1 -> opens Child of type A  
link 2 -> opens Child of type B  
link 3 -> open Child of type C  

Application start:  
click on link 1-> check if a child of type A is opened 

 - yes -> hides the current opened child and shows the A-type Child
 - no: -> hides the current opened child and creates a new A-type child and shows it  

click on link 2 -> check if a child of type B is opened  

 - yes -> hides the current opened child and shows the B-type Child  
 - no: -> hides the current opened child and creates a new A-type child and shows it

etc..

いくつかのコードを教えてください。
ありがとうございました...

更新:
このようなものですか?

 foreach (Form aForm in this.MdiChildren)
            {
                aForm.Hide();
            }
        foreach (Form f in this.MdiChildren)
        {
            if (f.Name == "VizualizareArticol")
                f.Show();
            else
            {
                VizualizareArticol vv = new VizualizareArticol();
                vv.MdiParent = this;
                vv.StartPosition = FormStartPosition.Manual;
                vv.Location = new Point(0, 0);

                vv.Show();
            }
        }

しかし、うまくいきません...

4

1 に答える 1

0

Control.Visibleを確認します。アイテムが表示されている場合は非表示にできます。表示されていない場合は非表示にできます。それ以外の場合は、作成したオブジェクトを確認してください。

すでにフォームを作成して非表示にしている場合、そのフォームは非表示になります。したがって、.Visibleを確認して、フォームを表示できます。

if(null != aForm  && !aForm.Visible){
    aForm.Show() 
    aForm.BringToFront();
}else if(null == aForm){
    // create the form
}
// otherwise form is existing & visible
于 2013-03-21T14:18:55.533 に答える