none
有办法让主窗体激活的时候同时激活其它窗体吗? RRS feed

  • 问题

  • 写了一个程序,界面由4个小窗体组成,非MDI。

    现在遇到一个问题,如果启动了其它程序,使这个程序变为后台运行,当点击任务栏按钮切回这个程序的时候,只有Application.Run方法启动的那个窗体显示出来了,其它的窗体都没有显示。

    (我把其它窗体的ShowInTaskbar属性设为了false)

    有没有办法在这个程序切换到前台的时候将其它3个窗体和这个启动窗体一起显示出来?


    Xlfdll
    2010年6月29日 4:32

答案

  • 你好!

         我上面的回复有问题,不好意思啊!你这样试试:

         Form2 form2 = new Form2();
         form2.Show(this);  //用这个方法体现父子关系!


    周雪峰
    • 已标记为答案 Xlfdll 2010年6月30日 16:06
    2010年6月29日 9:12
    版主

全部回复

  • 你好!

         你尝试把这几个窗体设置成主窗体的字窗体:

         form1.Parent=this;


    周雪峰
    2010年6月29日 5:25
    版主
  • 你可以在启动窗体的构造函数或者form_load事件里面加载其他窗体的显示
    努力+方法=成功
    2010年6月29日 6:06
  • 试验过这个方法,但是启动程序之后会直接引发异常(无法将顶级控件添加到顶级控件)。


    Xlfdll
    2010年6月29日 7:32
  • 你可以把窗体的TopLevel属性设为false

     private void Form4_Load(object sender, EventArgs e)
        {
         
          //把form3窗体添加到form4中的panel控件中
          Form3 f3 = new Form3();
          f3.Show();
          f3.TopLevel = false;
    
          this.panel1.Controls.Add(f3);
      
        }
    

    努力+方法=成功
    2010年6月29日 8:28
  • 你好!

         我上面的回复有问题,不好意思啊!你这样试试:

         Form2 form2 = new Form2();
         form2.Show(this);  //用这个方法体现父子关系!


    周雪峰
    • 已标记为答案 Xlfdll 2010年6月30日 16:06
    2010年6月29日 9:12
    版主
  • namespace Test
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private Form form2 = null;
            private void Form1_Load(object sender, EventArgs e)
            {
                form2 = new Form2();
                form2.Show();
            }
            private void Form1_SizeChanged(object sender, EventArgs e)
            {
                form2.WindowState = this.WindowState;
            }
            private void Form1_Paint(object sender, PaintEventArgs e)
            {
                form2.BringToFront();
            }
        }
    }

    说明:Form1表示主窗体。Form2表示4个子窗体。SizeChanged事件使5个窗体相同状态。Paint使4个子窗体始终在Z顺序的前面。

    2010年6月29日 9:59
  • 非常感谢!问题完美地解决了!

    一直对这块内容不是很熟悉。

    按照您的方法,改动了三行代码就把问题解决掉了~

    因为不想到最后把代码粘到一起,我用了一个窗体控制器类来控制这些窗体的实例。

     

    这个程序发布在 http://bbs.dbgtech.net/thread-73-1-1.html

     

    再次感谢您的解答!这算是最让我上心的一个Bug了。


    Xlfdll
    2010年6月30日 16:07
  • 你好!

         感谢你分享你的解决方法啊!

         不用客气啊!大家互相交流嘛!


    周雪峰
    2010年7月1日 9:05
    版主