c#Winform窗体实际运行大小与size属性设置不一致问题解决 |
您所在的位置:网站首页 › win7系统突然整体字体都变小了 › c#Winform窗体实际运行大小与size属性设置不一致问题解决 |
问题:
将Winform窗体设计程序从台式电脑拷贝到笔记本电脑后,刚开始运行,界面可以显示完全,但后来出现界面显示不完全问题,发现Winform窗体实际运行大小(QQ截图)与size属性设置不一致。 尝试一: 认为是误设置了窗体的某个属性,故与原来台式电脑上Winform窗体属性对比 结果:发现没有区别,未找到问题所在 尝试二: 尝试通过窗体属性设置如AutoSize、AutoScaleMode使窗体显示完全。 发现设置AutoScaleMode时,Font和Dpi效果一样,None和Inherit会使窗体控件间距变大,显示更加不完全,一般设置AutoScaleMode=Font或Dpi;设置AutoSize为True时,窗体实际运行大小(QQ截图)与size属性设置不一致,但窗体宽方向上显示完全,高方向上状态栏statusStrip被压在panel控件下面无法显示,将状态栏statusStrip放到panel控件中则可以显示完全(貌似把所有控件都放到一个panel中可以避免AutoSize为True时显示不完全的现象?不懂) 结果:发现将AutoSize属性设置为true,并把状态栏statusStrip(甚至所有控件都)放到一个panel中可以使界面显示完全,但Winform窗体实际运行大小(QQ截图)与size属性设置不一致。 **尝试三:**通过在Form_Load()中设置size更改窗体初始加载大小。(AutoSize=false;AutoScaleMode=Font) //size属性设置为1628*1062(界面恰好显示完全);实际显示1286*748(界面显示不完全) Rectangle ScreenArea = System.Windows.Forms.Screen.GetWorkingArea(this);//GetWorkingArea()检索显示器的工作区(工作区是显示器的桌面区域,不包括边界、标题栏、任务栏、停靠窗口和停靠工具栏) int mywidth = this.Width; //Winform窗体宽度---872 int myheight = this.Height; //Winform窗体高度---506 mywidth = ScreenArea.Width; //工作区宽度(不包括边界,标题栏,任务栏,工具栏等) ---1280 myheight = ScreenArea.Height; //工作区高度(不包括边界,标题栏,任务栏,工具栏等) ---680 this.Size = new Size(mywidth, myheight);结果: 1、窗体初始加载位置不在屏幕中央,整体偏右下 2、宽边的控件所在区域均在屏幕中,有一部分空白不在屏幕中, 我的笔记本电脑的“更改文本、应用等项目大小”(DPI)为150%,我在此环境下不小心手动修改了窗体的size或调整了控件位置,导致窗体变为了在高DPI环境下设计的窗体,启动了VS的DPI感知模式,使得界面变形,显示不完全。 解决方法:(AutoSize=false;AutoScaleMode=Dpi/Font) 1、关闭VS(有DPI感知模式) 2、将笔记本电脑的“更改文本、应用等项目大小”(DPI)由150%修改为100% 3、重新打开VS,尝试修改Winform窗体的size并《启动》(这样C#部分才会生成解决方案)运行窗体 4、将笔记本电脑的“更改文本、应用等项目大小”(DPI)为150% 5、《启动》运行窗体(千万不要修改Winform窗体的size) 发现窗体显示大小与size一致。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |