【问题标题】:Converting old VS 2002 Windows Forms projects to newer versions将旧的 VS 2002 Windows 窗体项目转换为新版本
【发布时间】:2010-08-06 19:28:50
【问题描述】:

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

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

【问题讨论】:

  • 我不能给你一个决定性的答案,但我的直觉是你运气不好。根据我的经验,新版本的 VS 将单个文件的表单定义视为麻风病人。

标签: c# visual-studio winforms


【解决方案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);
    }

可能需要修改布局属性以使其看起来不错。

【讨论】:

  • 对。不能像您建议的那样修改 InitializeComponent ,因为每次修改表单都会重新生成它,但是构造函数也可以工作。我希望避免必须手动对每个表单进行分配,但这不是世界末日。
【解决方案2】:

您可以这样做,但您必须手动进行:

  • 将整个 .cs 文件复制到 .designer.cs
  • 在 .designer 中添加部分关键字
  • 在 .designer 中,删除除 Windows Designer Generated Code 之外的所有内容
  • 在 .cs 中执行相反的操作(删除 Windows 设计器生成的代码)
  • 将 .designer.cs 添加到项目中

相当简单,但要处理多个表格非常费力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 2012-02-05
    • 1970-01-01
    • 2013-03-08
    • 2018-07-31
    • 1970-01-01
    • 2011-06-16
    相关资源
    最近更新 更多