我在Visual Studio 2008中使用.NET CF.
在自动生成的Form.Designer.cs中,有以下代码来指定按钮尺寸:
this.buttonX.Size = new System.Drawing.Size(96, 24);
但是当我在构造函数维度中使用相同的代码时,#34;吓坏了#34;和按钮要小得多。
public FormX()
{
InitializeComponent();
this.buttonX.Size = new System.Drawing.Size(96, 24);
}
如截图所示,左侧工作正常,右侧我改变了构造函数的尺寸,按钮更小...
编辑:为了澄清,按钮是在设计器视图中创建的,我想在之后动态更改按钮大小(只是大小)。
答案 0 :(得分:2)
问题是由AutoScaling引起的。您的开发机器具有与您的设备不同的DPI设置。在生成的代码中,实际存储了开发DPI设置,这用于通过与设备DPI的比较来缩放控件的高度和宽度。
有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/system.windows.forms.autoscalemode(v=vs.90).aspx,此外还有很多关于此主题的文章。
您可以更改AutoScaleMode并自行管理所有尺寸,如此处所示(How to make compact framework custom controls AutoScale aware),或者您可以在手动调整控件尺寸时应用框架正在执行的相同尺寸调整。
如果控件已经存在并且您只是想调整其大小,您仍然可以自己缩放尺寸,类似于某些链接文章中的操作。
像这样的东西(free-0hand,而不是语法检查):
SizeF scale = this.AutoScaleFactor;
Size desiredSize = new Size(96, 24);
SizeF calculatedSize = new SizeF(desiredSize.Width * scale.Width, desiredSize.Height * scale.Height);
this.buttonX.Size = calculatedSize.ToSize();