winforms – 设置某些属性时,Designer会自动重新调整表单大小

winforms – 设置某些属性时,Designer会自动重新调整表单大小,第1张

概述我面临的问题是,每次打开设计器时,WinForms表单都会自动重新调整大小. 这似乎只在某个设置中发生,但可以通过以下步骤轻松复制… >在visual studio中创建一个新项目 >默认的表单大小为300 x 300,但无论你设置它做什么都要记笔记 >将FormBorderStyle属性设置为FixedSingle >将ShowIcon属性设置为false >将ControlBox属性设置为fa 我面临的问题是,每次打开设计器时,WinForms表单都会自动重新调整大小.

这似乎只在某个设置中发生,但可以通过以下步骤轻松复制…

>在visual studio中创建一个新项目
>默认的表单大小为300 x 300,但无论你设置它做什么都要记笔记
>将FormborderStyle属性设置为FixedSingle
>将ShowIcon属性设置为false
>将ControlBox属性设置为false
>保存更改
>关闭设计师
>重新打开设计器,您会发现表单缩小了4个像素(宽度和高度)

我遇到的问题是,当它发生时,它不会调整任何控件(即使用锚点设置的控件)的大小,所以这意味着我最终得到了与表单边缘重叠的控件,每次都需要手动重新调整所有内容我打开设计师这很痛苦.

所以问题是:为什么会发生这种情况,我该怎么做才能阻止它发生?

我目前正在使用Visual Studio 2012 Professional,John Willemse已通过评论确认此问题也出现在Visual Studio 2010 Professional中.

解决方法 我明白了,这应该是任何VS版本中的错误.它是由ShowIcon属性引起的,当您将其设置为False时,设计器无法正确处理它.问题是Form类中的一些代码如下所示:

FormborderStyle borderStyle = FormborderStyle;       if (!ShowIcon &&           (borderStyle == FormborderStyle.Sizable ||            borderStyle == FormborderStyle.Fixed3D ||            borderStyle == FormborderStyle.FixedSingle))       {           cp.ExStyle |= NativeMethods.WS_EX_DLGMODALFRAME;       }

换句话说,当ShowIcon为False时,它使用与WS_border不同的边框样式,它使用模式对话框.在较旧的windows版本上有不同的边框,它们更胖.不确定是什么启发了这段代码,可能与windows 98有关.

问题是,Size属性是计算值,Winforms设计器只存储ClIEntSize属性.因此,它应重做此计算,但事实并非如此.

您可以在connect.microsoft.com上报告错误,但微软要修复它的几率非常低,这可能会浪费您的时间.有一个非常简单的解决方法,而不是在属性窗口中将ShowIcon设置为False,而是在构造函数中执行它.像这样:

public Form1() {        InitializeComponent();        this.ShowIcon = false;    }
总结

以上是内存溢出为你收集整理的winforms – 设置某些属性时,Designer会自动重新调整表单大小全部内容,希望文章能够帮你解决winforms – 设置某些属性时,Designer会自动重新调整表单大小所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1082564.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存