Showing MDI Child - 一个只在屏幕上出现一毫秒可见的随机形式

Showing MDI Child - A random form visible only for a millisecond appearing on the screen

我有一个 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();
    //}
} 

有一个只显示一毫秒的随机表格无缘无故地出现在屏幕上。有什么问题?

根据注释代码,您要查找的事件是NodeMouseClick

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

闪烁是因为你先显示表单,然后设置它MdiParent。所以它闪烁;它显示在 mdi 区域之外,然后在设置其 MdiParent 后显示在 mdi 客户区域。

解决问题,先设置cf.MdiParent = this;,再调用cf.Show();即可。