2

当我在设计器视图中打开表单时,VS 2010 似乎正在更新我的表单的 Designer.cs 文件。

例如,假设我有一个带有 System.Windows.Forms.Label 类型标签的表单,并且我创建了标签,以便设计器文件具有(自动生成的代码)

this.myLabel.AutoSize = true;
this.myLabel.Font = new System.Drawing.Font("Tahoma", 8.25F,
System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.myLabel.Location = new System.Drawing.Point(**25, 63**);
this.myLabel.Name = "myLabel";
this.myLabel.Size = new System.Drawing.Size(**101, 13**);
this.myLabel.TabIndex = 1;
this.myLabel.Text = "A simple windows label.";

当我关闭设计器视图并再次打开它时,VS 2010有时会将其更改为

this.myLabel.AutoSize = true;
this.myLabel.Font = new System.Drawing.Font("Tahoma", 8.25F,
System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.myLabel.Location = new System.Drawing.Point(**29, 78**);
this.myLabel.Name = "myLabel";
this.myLabel.Size = new System.Drawing.Size(**124, 17**);
this.myLabel.TabIndex = 1;
this.myLabel.Text = "A simple windows label.";

当我除了打开文件之外什么都没做。

有谁知道为什么会这样?有没有其他人经历过这样的事情?

4

1 回答 1

5

功能,而不是错误。该表单最初是在其视频适配器每英寸点数设置为 96 的机器上设计的。您的机器具有不同的 DPI,120。在现代版本的 Windows 上很容易更改,您选择了 125%(中)设置在控制面板 + 显示中。

不同的 dpi 设置会影响您使用的字体的大小。在您的代码片段中有一个可见的,它是 8.25 点。一点是 1/72 英寸。所以文本最初是 8.25 * 1/72 = 0.114583 英寸高。dpi 为 96,即 0.114583 x 96 = 11 像素。请注意,这也解释了为什么将额外的 0.25 添加到磅值上,它是一个很好的整数。

但是现在你的 dpi 是 120,文本将是 8.25 x 1/72 x 120 = 14 像素。文本变大了,你的控件也需要变大,否则它会剪切文本,剪掉下降部分。

这是在您加载表单时自动完成的。基本属性是 AutoScaleMode,默认设置为 Font。还有 AutoScaleDimensions,您会发现它分配在 InitializeComponent() 方法的顶部。那是记住原始DPI设置的那个。

这也将发生在您用户的机器上。请确保表单正确自动缩放。如果您的控件具有不同的字体大小,您可能会遇到一些麻烦。只需将表单重新检查到源代码管理中,这样就不会再次发生这种重新缩放。

于 2013-03-21T22:44:00.773 回答