none
关于全屏的问题 RRS feed

  • 问题

  • 请问如何才能让多文档程序彻底全屏?我试过把父窗口的和子窗口的WindowState属性都设置为Maximized,把父窗口的FormBorderStyle属性设置为None。但是这样做出来的全屏效果有问题啊,父窗口是彻底全屏了,但子窗口下方和右方还有一点空间没全屏到(能看到后面的父窗口底色)。
    2010年7月13日 10:17

答案

  • 你好!

         1,先说你的第一张图吧,那个边框应该是子窗体的边框,并非是主窗体的,从你第二段代码中把子窗体的边框去掉后这个区域就消失可以验证这一点。

         2,你想去掉子窗体的标题栏,这个在MDI模式下很难做到,我们可以暂时切换回SDI模式,全屏完毕再切换回去就可以了,而且你既然在全屏幕状态下不希望看到主窗体,那主窗体也就没有必要全屏了,只把子窗体全屏就可以:

            private void button3_Click(object sender, EventArgs e)
            {
                Form2 form2 = new Form2();
                this.IsMdiContainer = false;//取消MDI模式。
               
               
               
                form2.Show();


                form2.FormBorderStyle = FormBorderStyle.None;
                form2.WindowState = FormWindowState.Maximized;


    周雪峰
    2010年7月15日 8:24
    版主

全部回复

  • 你好!

        不好意思,没有明白你的意思,你想让子窗体把父窗体都遮住吗?


    周雪峰
    2010年7月13日 11:23
    版主
  • 我是想令窗体全屏显示,但是我把父窗口的和子窗口的WindowState属性都设置为Maximized,把父窗口的FormBorderStyle属性设置为None之后,子窗体的下方和右方都有部分区域未能填满。论坛能不能贴图?有图片的话就好说明多了。
    2010年7月13日 11:38
  • //在子窗体Form_Load里加这2句
    
          this.WindowState = FormWindowState.Maximized;
          this.FormBorderStyle = FormBorderStyle.Sizable;
    

    If this is helpful
      { Please Mark as Answered }
    else if it is not helpful
      { Un-Mark as Answered }


    Best Regards
    Huan Li, Code Blog: Small is New Big In C#
    2010年7月13日 11:46
  • 添加了那2句还是不行啊,子窗体的下方和右方还是有没被填满的空间。
    2010年7月13日 12:02
  • 你好!

        “子窗口下方和右方还有一点空间没全屏到(能看到后面的父窗口底色)。”

        这说明父窗体已经全屏了啊!

        你这样就彻底全屏了,连任务栏都看不到了:

    this.FormBorderStyle = FormBorderStyle.None;
    this.WindowState = FormWindowState.Maximized;

     

        上传图片到支持外链的相册,博客等,然后Ctrl+C,Ctrl+V粘贴到你的帖子上就可以了。


    周雪峰
    2010年7月13日 12:44
    版主
  • 嗯,父窗体的确是彻底全屏了,但子窗体不是。http://img3.wal8.com/img3/2323554l/s/1279026244_412810972.jpg
    2010年7月13日 13:04
  • 图片看不到啊。
    周雪峰
    2010年7月13日 14:17
    版主
  • 点击看不到吗?刷新几次就看到了,那个相册有点问题。那个图片是父窗体彻底但子窗体不彻底全屏的图片
    2010年7月13日 14:40
  • 抱歉,我还是看不到你的图片啊。
    周雪峰
    2010年7月13日 14:56
    版主
  • 你好!

         我理解你的意思是子窗体先最大化,然后全屏主窗体,子窗体也要一起全屏,不能露出主窗体的背景,我用如下代码测试,已经可以实现这样的效果了:

            private void button3_Click(object sender, EventArgs e)
            {
                Form2 form2 = new Form2();
                form2.MdiParent = this;
               
                form2.Show();
                form2.WindowState = FormWindowState.Maximized;

                this.FormBorderStyle = FormBorderStyle.None;
                this.WindowState = FormWindowState.Maximized;
               
            }

       我不是很清楚,你是怎样做的,我重现不出来你图片里的效果。


    周雪峰
    2010年7月15日 5:46
    版主
  • 谢谢版主回答,但是我按你说的做了,效果还是有问题啊。我的代码如下:

     private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
         Form2^ form2=gcnew Form2();
         form2->MdiParent=this;
         form2->Show();
         form2->WindowState=System::Windows::Forms::FormWindowState::Maximized;
         this->FormBorderStyle=System::Windows::Forms::FormBorderStyle::None;
         this->WindowState=System::Windows::Forms::FormWindowState::Maximized;
        }

    效果:http://image163.poco.cn/mypoco/myphoto/20100715/14/5546828420100715144011014_640.jpg

    (还是有未填满的部分,标题栏也没消去)

    之后我试着加了句form2->FormBorderStyle=System::Windows::Forms::FormBorderStyle::None;变成:

     private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
         Form2^ form2=gcnew Form2();
         form2->MdiParent=this;
         form2->Show();
         form2->WindowState=System::Windows::Forms::FormWindowState::Maximized;
         form2->FormBorderStyle=System::Windows::Forms::FormBorderStyle::None;
         this->FormBorderStyle=System::Windows::Forms::FormBorderStyle::None;
         this->WindowState=System::Windows::Forms::FormWindowState::Maximized;
        }

    效果:http://image163.poco.cn/mypoco/myphoto/20100715/14/5546828420100715143951035_640.jpg

    (总算是填满屏幕了,但标题栏未消去)

    2010年7月15日 6:43
  • 你好!

         1,先说你的第一张图吧,那个边框应该是子窗体的边框,并非是主窗体的,从你第二段代码中把子窗体的边框去掉后这个区域就消失可以验证这一点。

         2,你想去掉子窗体的标题栏,这个在MDI模式下很难做到,我们可以暂时切换回SDI模式,全屏完毕再切换回去就可以了,而且你既然在全屏幕状态下不希望看到主窗体,那主窗体也就没有必要全屏了,只把子窗体全屏就可以:

            private void button3_Click(object sender, EventArgs e)
            {
                Form2 form2 = new Form2();
                this.IsMdiContainer = false;//取消MDI模式。
               
               
               
                form2.Show();


                form2.FormBorderStyle = FormBorderStyle.None;
                form2.WindowState = FormWindowState.Maximized;


    周雪峰
    2010年7月15日 8:24
    版主
  • 谢谢版主!想不到MDI全屏也那么麻烦……不过的确是解决了!

    2010年7月15日 9:13
  • 不客气啊。
    周雪峰
    2010年7月19日 7:47
    版主