当没有进行任何更改时,VS 2010会更新Designer.cs

Mia*_*aka 2 visual-studio-2010 windows-forms-designer

当我在设计器视图中打开表单时,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.";
Run Code Online (Sandbox Code Playgroud)

当我关闭设计师视图并再次打开它时,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.";
Run Code Online (Sandbox Code Playgroud)

当我没有做任何事情而不是打开文件.

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

Han*_*ant 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设置的那个.

这也将发生在用户的机器上.确保表单正确自动缩放.如果您的控件具有不同的字体大小,则可能会遇到一些问题.只需将表单检查回源代码控制,这样就不会再次进行重新缩放.