2016-10-17 11 views
1

左にツリービューのMDIフォームがあり、左側にスプリッタで右に表示されるフォームがあります。私はtreeview内のノードをクリックすることに基づいてフォームを開きたいのですが、どうすれば適切に行うのですか?問題は、私が新しいフォームを開くと、ランダムなものが画面上で1ミリ秒間ポップアップして消え、表示されることを意味するものが直後に表示されるということです。ここ は、これまでの私のコードです:MDI子を表示 - 画面に表示されるミリ秒間だけ表示されるランダムなフォーム

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
{ 
    CloseAllMdiChildForms(); 
    if (e.Node.Name == "root") 
    { 
     CustomerFrm cf = new CustomerFrm(); 
     cf.Show(); 
     cf.MdiParent = this; 
    } 

    //treeView1.MouseClick(); 
    //if (treeView1.SelectedNode.Level == 0) 
    //{ 
    // CustomerFrm CF = new CustomerFrm(); 
    // CF.ShowDialog(); 
    //} 
} 

唯一の理由なしに画面上に表示されるミリ秒のために目に見えるランダム形式があります。どうしたの?

+0

問題が何ですか。 –

+0

理由がなく画面に表示されるミリ秒の間だけ表示されるランダムなフォームがあります。 – UZIERSKI

+1

これは、まずフォームを表示し、そのフォームの 'MdiParent'を設定するからです。だからそれはちらつく。 mdi領域外に表示され、mdi親領域を設定した後、mdiクライアント領域に表示されます。この問題を解決するには、最初に 'cf.MdiParent = this;'を設定してから 'cf.MdiParent = this;'を呼び出すだけで十分です。 –

答えて

2

ちらつきがあります。だからそれはちらつく。 mdiエリア外に表示され、MdiParentに設定された後、mdiクライアントエリアに表示されます。

問題を解決するには、最初にcf.MdiParent = this;と設定してからcf.Show();に電話するだけで十分です。

2

コメントしたコードに基づいて、探しているイベントはNodeMouseClickです。あなたが最初のフォームを表示し、そのMdiParentを設定しているため

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
{ 
    if (e.Node.Name == "root") 
    { 
     CustomerFrm childForm = new CustomerFrm(); 
     childForm.MdiParent = this; 
     childForm.Show(); 
    } 
}