昨天,当我通过 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);
}
似乎与this thread中报告的问题相同。我发布了一个可能的解释和解决方法。复制粘贴在这里以提高可见性:
就我而言,问题似乎是在表单类文件中添加第二个类。
解决方法:在另一个文件中定义新类。
重现问题的步骤 [Visual Studio 17.5.0 final]:
namespace MyApplication
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
public class MyClass
{
public string Name { get; set; }
}
}
如果表单中有多个类,我尝试将与表单无关的类删除,保存文件,然后再次添加它们并保存。问题消失,直到你移动表格上的任何东西。