听高人介绍用panel控件可以类似的做一个MDI窗体,主要是让任务栏只显示一个窗体,因为用PANEL做出的,有的功能MDI窗体做不出来,
我写以下代码
private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            panel1.Controls.Add(f2);
            f2.Show();
        }
只是希望打开另个一个窗体的时候,任务栏只显示一个窗体,但是这段代码不成功,高人帮忙修改一下,非常感谢。 

解决方案 »

  1.   

    f2.TopLevel = false;
    f2.Show(); 
    panel1.Controls.Add(f2); 
      

  2.   

    建议不要这样做,这样做winform的有些消息你都用不了了。个人觉得这样做打乱了原有的消息机制。任务栏只显示一个窗体是不是指的当打开多个窗体时任务栏只显示一个图标,这样你可以设置相关的属性如:showintaskbar=false即可,如果为了实现这个功能而用panel作为form的容器感觉有点得不偿失。
      

  3.   

    panel1控件是否在窗体的顶层,如果不在的话,那肯定显示不出来的。
      

  4.   

    让任务栏只显示一个窗体?
    设置窗体的ShowInTaskbar属性为False就不会在任务栏显示了,没必要用Panel代替吧?
      

  5.   

    如果只是为了任务栏的显示的话,只需要把不想再任务栏显示的窗口的ShowInTaskbar属性设置为FALSE
    使用PANEL装载窗口其实也很常见,不过好像没听说是拿来替代MDI的,用PANEL装载窗口个人感觉更类似与巴窗口作为控件使用
    其次MDI窗口有一些属于本身的优势,比如子窗口的排布管理等功能使用PANEL的话是不好代替实现的
      

  6.   

    MDI有一个重大的不方便, 要么子窗体全部最大化,要么全部正常化,这是让我最不能忍受的,所以我才想用别的方式来替代一下.