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

本文关键字:一毫 屏幕 MDI 一个 随机 显示 | 更新日期: 2023-09-27 18:13:19

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

有一个随机的形式只在一毫秒内出现在屏幕上。有什么问题吗?

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

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

要解决这个问题,只需先设置cf.MdiParent = this;,再调用cf.Show();

根据注释的代码,您正在寻找的事件是NodeMouseClick。

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