2010-08-06 53 views
2

我有一个应用程序在C#1.0中使用Visual Studio .NET启动。作为部分重写/升级的一部分,我希望应用程序利用Windows Forms 2.0中的窗体自动缩放功能。这些功能依赖于设置AutoScaleDimensions属性,该属性应该由设计人员完成。我添加到项目中的新自定义窗体使用正确的设计器代码进行设置,但是我所有的现有窗体和控件都不会自动生成此属性,因此无法正确自动缩放。我相信这是因为旧的表单是使用旧的VS2002项目格式创建的,其中所有设计器生成的代码都被转储到用户创建的代码所在的文件中;现代的WinForms应用程序,当然,由VS分割成多个文件。将旧的VS 2002 Windows窗体项目转换为新版本

我的问题:是否有任何已知的方式将旧的Windows Forms项目“升级”为现代Visual Studio格式? (项目文件已升级到VS2010格式,但表单本身仍然使用单文件格式。)我希望VS默认生成AutoScaleDimensions属性,而不必手动初始化属性。

+0

我不能给你一个确定的答案,但我的直觉是你运气不好。在我所有的经验中,VS的新版本将单个文件的表单定义像lepers一样处理。 – 2010-08-06 19:35:54

回答

1

你不会帮助将表单类转换为部分类。真的没有必要,设计师仍然支持旧的风格。如果编辑表单布局不会自动插入属性分配,那么只需在ClientSize分配之前将其粘贴到自己的表单中即可。首先在一个示例项目上尝试一下,只需在窗体上放下一个按钮,然后查看Designer.cs文件内容即可。它应该像:

 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
     this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     this.ClientSize = new System.Drawing.Size(...) 
     // etc.. 

你可以尝试一下,看看形式扩展正确,而不必在你的窗体的代码粘贴此重新启动您的计算机:

protected override void OnLoad(EventArgs e) { 
     this.Font = new Font(this.Font.FontFamily, 125f/96 * this.Font.SizeInPoints); 
     base.OnLoad(e); 
    } 

与布局属性修改一下可能有必要让它看起来不错。

+0

右键。不能像你所建议的那样修改InitializeComponent,因为每次修改表单都会重新生成InitializeComponent,但构造函数也可以。我希望避免必须手动完成每个表单的分配,但这不是世界末日。 – nealyoung 2010-08-06 21:55:59

0

你可以这样做,但你必须手工进行:

  • 复制整个cs文件到了.Designer.cs
  • partial关键字添加到.designer一个
  • 在在.designer一个,去掉一切,除了Windows的设计器生成的代码
  • 不要在的.cs相反(删除Windows设计器生成的代码)
  • 添加了.Designer.cs到项目

相当简单,但非常劳动密集,可以做几种以上的形式。

相关问题