日期:2014-05-17  浏览次数:21073 次

C# WinForm 最大化问题
今天在开发WinForm过程中发现一个问题,也不知道是不是微软的bug。

设置窗体属性MaximizeBox属性为false,就是隐藏最大化按钮,然后设置WindowState属性为Maximized,最大化启动,这时你会发现一个问题,窗体最下边会隐藏一小部分内容到任务栏中,而如果不设置MaximizeBox属性为false,则窗体的内容会全部显示。
求大神指教,你们有没有遇到过这种问题。

------解决方案--------------------
初始化时加上

this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
------解决方案--------------------
2L大神的方法也许有效,但是明显是歪门邪道。把窗体大小强制为屏幕大小,那是不是意味着窗体的状态不是最大化了?

技术,不是用的越牛逼,越花里胡哨,越高级深入,就越水平高。

而是,能用最正确的方法才是证明水平高。

把书读厚了,那不是本事,把书读薄了那才是本事。

知道Java的AWT/Swing不? 虽然Java GUI非常难看,非常慢,几乎很少有人用,但是Java AWT/Swing非常有名,全世界程序员都佩服,当然你不佩服那是你自己的问题。 为啥都佩服?

因为Java AWT/Swing 的思想非常牛逼,非常有启发性: 在每个平台上, 平台本地只负责创建一个空白的窗体区域, 然后Java自己把按钮,文本框等控件画上。

这样的牛逼是明显的,所有平台都一模一样的GUI,所有平台都一样的维护代码,所有平台对上层Java程序来说都没有区别。


你这个最大化的问题, 应该是最开始隐藏窗体,然后调用窗体的最大化函数,然后再显示。 这个结果就是,不仅仅窗体铺满屏幕了, 而且状态也是最大化的。