2016-11-17 13 views
-1

私はWindowsアプリケーションで作業しています。私は、メインフォーム(親)といくつかのchildFormを持っています。 MainFormには、childFormの名前リストを含むリストビューがあり、リスト内の各名前をクリックすると、関連するchildFormが表示され、前のChildFormが閉じます。他の子フォームから子フォームを開く方法は?

私はchildFormを示し、MainForm.cs(ParentForm)で前childFormを閉じるためにこのコードを使用する:

CloseForms(); 
frm_draft = new frm_ShowDraft(); 
frm_draft.MdiParent = this; 
frm_draft.Show(); 

CloseForm()childFormはrunnigとそれを開閉するチェック方法があるが。 これまでのところすべてが良いです。

子フォームの1つにボタンがあります。ユーザーがクリックすると、このchildFormを閉じて別の子フォームを表示する必要があります。しかし、ボタンをクリックすると、childForm2がMainFormから表示されます。 MainFormの中でどのように表示できますか?メインフォームWeiFen羅ライブラリを使用して子フォームを表示するには

this.close(); 
frm_c2 = new frm_child2(); 
frm_c2.MdiParent = new MainForm().ParentForm; /// Or this.MdiForm 
frm_c2.Show(); 
+0

これは、 'C#'なぜあなたは 'VB.NET'タグを使用しているされている場合は? – Bugs

+0

見てください[こちら](http://stackoverflow.com/questions/8566582/how-to-centerparent-a-non-modal-form/8566716#8566716)。 – dee

+0

@ Jinx88909 VB.NETタグ? – saedbfd

答えて

0

http://www.independent-software.com/weifenluo-dockpanelsuite-tutorial-cookbook/

:ボタンのクリックイベントで

私のコード。 IsMdiContainterプロップが真であることを確認し

enter image description here

: このコントロールは内部の3つのフォームとそれが簡単にあなたのメインフォームのVisual Studioドッキング画面にフォームをドッキングする

フォームを行います。

enter image description here

例:

public Form1() 
{ 
    InitializeComponent(); 

    Form2 f2 = new Form2(); // create new form 

    // dockPanel is an control from WeiFen Luo more info see the link 
    // dockPanel control is docked in your mainform. 
    // this will open Form2 in the dockPanel and align it left 
    f2.Show(dockPanel, DockState.DockLeft); 

} 

詳細ドッキングオプション:

  1. DockState.Fillドックは、穴の上に形成dockPanel
  2. DockState.Rightドックは、リンク ドッキングフォームのresponsifnesをヘンデルます。このコントロールをチェックし、よりオプションのdockPanel

の上側に形成dockPanel

  • DockState.Topドックのrightsideで形成しますあなたのための位置計算の割り当てを処理します。

  • +0

    はいIsMdiContainer = Trueを設定します – saedbfd

    +0

    .Show()の代わりにShowDialog()を試してみてください。 –

    +0

    しかし、私はMainFormの中にchildFormを表示します。 ShowDialog()は子ではなく親としてオープンします。 – saedbfd

    2

    あなたは同じMDIFormのを設定し、最後に閉じる呼び出す必要があります:

    frm_c2 = new frm_child2(); 
    frm_cLetter.MdiParent = this.MdiParent; 
    frm_cLetter.Show(); 
    this.Close(); 
    
    +0

    私の問題は、childForm2がchildFormではなく親Formのように表示されることです。どのように私はmainFormの中のchildFormのようにchildForm2を表示できますか? – saedbfd

    +0

    frm_cLetter.Show()の後にthis.Close()を入れます。 – Shadowed

    +0

    最後にthis.Close()を挿入します。 MainFormからchildForm2をまだ表示しています。 – saedbfd

    関連する問題