当前位置:编程学习 > C#/ASP.NET >>

自定义窗体最大化无法铺满全屏

我做的自定义窗体,在运行的时候用代码重绘掉了系统的边框和标题栏,在我最大化的时候为什么不能铺满全屏呢?
自定义窗体 最大化 全屏 --------------------编程问答-------------------- 还不如做成没有边框的窗体,然后绘制这个窗体的顶部边框模拟标题栏呢。 --------------------编程问答-------------------- 没试过,还真不知道 --------------------编程问答-------------------- 因为你系统标题栏还是存在的,只是变透明了而已,他还是要占位置。 --------------------编程问答--------------------
引用 1 楼 devmiao 的回复:
还不如做成没有边框的窗体,然后绘制这个窗体的顶部边框模拟标题栏呢。


没边框的窗体好多消息都没有了,比如最小化的时候有系统效果等。 --------------------编程问答--------------------
引用 3 楼 danding_ge 的回复:
因为你系统标题栏还是存在的,只是变透明了而已,他还是要占位置。


是啊,那块的高度正好是标题栏的高度,请问要怎么解决呢? --------------------编程问答--------------------


        public Form10()
        {
            InitializeComponent();
            this.FormBorderStyle = FormBorderStyle.None;
            this.Shown += new EventHandler(Form10_Shown);
        }

        void Form10_Shown(object sender, EventArgs e)
        {
            Application.DoEvents();
            this.Location = new Point(0, 0);
            this.Width = Screen.PrimaryScreen.WorkingArea.Width;
            this.Height = Screen.PrimaryScreen.WorkingArea.Height;
            this.PreviewKeyDown += new PreviewKeyDownEventHandler(Form10_PreviewKeyDown);
        }

        void Form10_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.KeyValue == 27)//Esc键
            {
                this.Close();
            }
        }


你这样就是最大化窗体了,而且没有标题栏,至于你要自己怎么写标题栏,那就加处panel,拉图片进去就行了。 --------------------编程问答--------------------
引用 5 楼 shaohuatsou 的回复:
Quote: 引用 3 楼 danding_ge 的回复:

因为你系统标题栏还是存在的,只是变透明了而已,他还是要占位置。


是啊,那块的高度正好是标题栏的高度,请问要怎么解决呢?
我所了解的只能隐藏标题栏和边框,标题栏的功能可以自己重写。 --------------------编程问答-------------------- 如果是追求美观的界面建议用WPF取代winform --------------------编程问答-------------------- FormBorderStyle.None --------------------编程问答-------------------- 用第三方皮肤吧 呵呵 --------------------编程问答-------------------- 1.获取当前屏幕显示区域大小,不包含任务栏. 即任务栏以上的宽度和高度

Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height

2.获取当前屏幕大小,包括任务栏.

Screen.PrimaryScreen.Bounds.Width ,Screen.PrimaryScreen.Bounds.Height
将窗体高和宽设为屏幕的高度和宽度 --------------------编程问答-------------------- C#高仿QQ2013通讯DEMO-点击下载
C#精仿360安全卫士-点击下载 --------------------编程问答--------------------
引用 6 楼 c02645 的回复:


        public Form10()
        {
            InitializeComponent();
            this.FormBorderStyle = FormBorderStyle.None;
            this.Shown += new EventHandler(Form10_Shown);
        }

        void Form10_Shown(object sender, EventArgs e)
        {
            Application.DoEvents();
            this.Location = new Point(0, 0);
            this.Width = Screen.PrimaryScreen.WorkingArea.Width;
            this.Height = Screen.PrimaryScreen.WorkingArea.Height;
            this.PreviewKeyDown += new PreviewKeyDownEventHandler(Form10_PreviewKeyDown);
        }

        void Form10_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.KeyValue == 27)//Esc键
            {
                this.Close();
            }
        }


你这样就是最大化窗体了,而且没有标题栏,至于你要自己怎么写标题栏,那就加处panel,拉图片进去就行了。


你这个最早之前是这样做的,其实就是把边框设置为NONE 大部分的消息自己处理,但是缺少了Windows窗体特有的一些效果,现在已经不打算这样做了,不过很感谢你码了这么多代码。 --------------------编程问答--------------------
引用 7 楼 danding_ge 的回复:
Quote: 引用 5 楼 shaohuatsou 的回复:

Quote: 引用 3 楼 danding_ge 的回复:

因为你系统标题栏还是存在的,只是变透明了而已,他还是要占位置。


是啊,那块的高度正好是标题栏的高度,请问要怎么解决呢?
我所了解的只能隐藏标题栏和边框,标题栏的功能可以自己重写。


最近正在重新画非客户区的东西... --------------------编程问答-------------------- 那么说的话我认为没办法,这个是机制问题,你可以自定义事件试试 --------------------编程问答-------------------- --------------------编程问答-------------------- 看是不是上面一部分也是这个form的

估计你绘制的时候 不是从 0,0 开始

所以导致上面有部分是空的

补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,