我正在使用.NET Framework 2.0开发一个C#应用程序。
问题是,在我的客户端PC上,控件扩展,布局更改(控件的位置发生变化),有时按钮完全错过。甚至在具有2-3个文本框,2-3个按钮和一些标签的表单上也会发生这种情况。我尝试了很多调查。我试图在表单的resize事件中显示一条消息。但它没有得到调用。在挖掘了一点之后,似乎在Designer.cs
文件中,即使为表单调用ResumeLayout(false),但这会导致控件的扩展/处置。
我的客户在他的戴尔笔记本电脑上使用Windows XP专业版。他能够在Windows XP专业版的其他笔记本电脑上重现这个问题。但不适用于其他操作系统(如Windows XP Home或Windows Vista)。在使用Windows XP专业版的桌面上,它不可重现。
如何解决此问题?
答案 0 :(得分:4)
您确定它与操作系统有关吗?这听起来更像是一个dpi问题。 '正常'是96 dpi。如果表格设计为96 dpi,那么在不同的设置下它可能会有所不同。
有关如何检查/更改XP中的dpi设置,请参阅this article。
修改:我忘了提及您可以使用TableLayoutPanel Control来布置表单。使用自动调整大小功能有助于在任何dpi设置下保持“正常”状态。
答案 1 :(得分:3)
这可能是由于Windows XP中的DPI设置。
如果您正在使用标准(96)DPI设置,但是它们是使用另一种设置(即:120)进行设置,则通常会使控件的布局变得混乱。
处理此问题的“正确”方法是尝试使用可根据需要调整大小的布局元素自动构建布局。这在Windows窗体中很难(以及WPF修复的东西之一)。