更改 Windows 窗体中的窗口大小会给出“应该有两个或更多类路径”。错误

use*_*123 5 c# windows-forms-designer winforms visual-studio-2022

昨天,我开始收到“应该有两个或更多班级部分”的信息。当我通过 Windows 窗体设计器调整 UI 时出现错误。这是一个已建立的应用程序。然后,我创建了一个快速的 Win Forms 应用程序,其中包含一个按钮,用于通过调试器测试一些计算代码。我编辑代码,执行程序,单击按钮,然后使用调试器来遍历代码。这很好用。但是,如果我尝试调整按钮的大小,或调整 Form1 窗口的大小并尝试重建应用程序,我会得到“应该有两个或更多类部分”。错误,没有附加信息。当我查看Form1.Designer.cs文件时,它保留了尝试调整 UI 之前的原始设置。如果我关闭 Visual Studio,我必须同意丢失对项目的任何更改。重新打开 Visual Studio 项目后,我的应用程序运行良好,除非我尝试以任何方式更改 UI(调整大小、添加控件等)。

我尝试用 C# 创建一个新应用程序,但出现了同样的错误。该应用程序的简单性与“Hello World”非常接近。我确实注意到昨天 Visual Studio 已修补/升级。我怀疑这可能与新应用程序以及旧的、完善的应用程序上突然出现的问题有关。我尝试了 devenv /Safemode 但这没有帮助。

这是我的 Designer.cs 的一部分(如下)。当我直接编辑此文件以添加button1的BackColor和Form1的大小,然后保存Designer.cs文件并执行程序时,一切正常。该错误似乎与 Windows 窗体设计器有关。

我想添加标签“net7.0-windows”,但我没有足够的声誉点来执行此操作,并且该标签尚未创建。

        private void InitializeComponent()
        {
            button1 = new Button();
            SuspendLayout();
            // 
            // button1
            // 
            button1.Location = new Point(28, 18);
            button1.Name = "button1";
            button1.Size = new Size(314, 105);
            button1.TabIndex = 0;
            button1.Text = "Calculate Tables";
            button1.BackColor = System.Drawing.Color.Orange;
            //button1.UseVisualStyleBackColor = true;
            button1.Click += button1_Click;
            // 
            // Form1
            // 
            AutoScaleDimensions = new SizeF(7F, 15F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(400, 200);
            Controls.Add(button1);
            Name = "Form1";
            Text = "Form1";
            ResumeLayout(false);
        }
Run Code Online (Sandbox Code Playgroud)

小智 9

似乎与该线程中报告的问题相同。我发布了可能的解释和解决方法。复制粘贴到此处以供查看:

\n

就我而言,问题似乎是在表单类文件中添加第二个类。

\n

解决方法:在另一个文件中定义新类。

\n

重现问题的步骤 [Visual Studio 17.5.0 Final]:

\n
    \n
  1. 创建一个新项目:模板:Windows 窗体应用程序 (C#)。下一个。设置项目名称(即MyApplication)。下一个。框架:.NET 6.0(长期支持)。创造。
  2. \n
  3. (Visual Studio 创建项目并在设计器中打开 Form1.cs)
  4. \n
  5. 向窗体添加按钮控件。保存(Ctrl+S)。确定。
  6. \n
  7. F7 访问表单代码。
  8. \n
  9. 在同一个命名空间中的 Form1 类下面添加第二个类(即 MyClass):
  10. \n
\n
namespace MyApplication\n{\n    public partial class Form1 : Form\n    {\n        public Form1()\n        {\n            InitializeComponent();\n        }\n    }\n\n    public class MyClass\n    {\n        public string Name { get; set; }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 保存(Ctrl+S)。好的。
  2. \n
  3. 返回设计器并更改任何内容(即移动按钮\n位置)。
  4. \n
  5. 保存(Ctrl+S)-->错误:\xe2\x80\x9c应该有两个或更多类部分\xe2\x80\x9d
  6. \n
\n