2016-10-17 1 views
1

У меня есть форма MDI с древовидной структурой слева и форма, чтобы появиться справа с разветвителем влево. Я хочу открыть форму, основанную на том, что пользователь нажимает на узел в дереве, как мне это сделать правильно. Проблема в том, что когда я открываю новую форму, случайный появляется на экране в течение милисекунды, а затем исчезает, и тот, который появляется, появляется сразу после. Вот мой код до сих пор:Показан MDI Child - случайная форма, видимая только на миллисекунду, появляющуюся на экране

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

Мерцание происходит потому, что вы сначала отобразить форму, а затем установить его MdiParent. Поэтому он мерцает; он отображается за пределами области mdi, а затем после установки его MdiParent он отображается в клиентской области mdi.

Для решения этой проблемы достаточно установить cf.MdiParent = this;, а затем позвонить по телефону cf.Show();.

2

На основе прокомментированного кода, которое вы ищете, это NodeMouseClick.

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
{ 
    if (e.Node.Name == "root") 
    { 
     CustomerFrm childForm = new CustomerFrm(); 
     childForm.MdiParent = this; 
     childForm.Show(); 
    } 
} 
Смежные вопросы