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

kninwzqo  于 2023-03-09  发布在  Windows
关注(0)|答案(1)|浏览(238)

昨天,当我通过Windows窗体设计器调整UI时,我开始收到***“应该有两个或更多的类部件。"错误。这是在一个已建立的应用程序上。然后,我创建了一个快速Win窗体应用程序,该应用程序带有一个按钮,用于通过调试器测试一些计算代码。我编辑代码,执行程序,单击按钮,并使用调试器遍历代码。这工作得很好。但是,如果我试图调整按钮的大小,或者调整form 1窗口的大小并试图重新生成应用程序,我得到“应该有两个或更多类部件。"*错误,没有其他信息。当我查看Form1.Designer.cs**时文件,它将保留尝试调整UI之前的原始设置。如果关闭Visual Studio,我必须同意放弃对项目所做的任何更改。重新打开Visual Studio项目时,我的应用运行正常,除非我尝试以任何方式更改UI(调整大小、添加控件等)。
我试着用C#创建一个新的应用程序,也出现了同样的错误。这个应用程序在简单性上接近于“Hello World”。我确实注意到昨天Visual Studio被打了补丁/升级了。我怀疑这可能与新应用程序以及旧的、成熟的应用程序上突然出现的问题有关。我试过devenv /Safemode,但没有帮助。
下面是我的Designer.cs的一部分。当我直接编辑这个文件来添加button 1的BackColor和Form 1的大小,然后保存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);
        }
pn9klfpd

pn9klfpd1#

看起来与this thread中报告的问题相同。我发布了一个可能的解释和解决方案。复制粘贴到此处以提高可见性:
在我的例子中,问题似乎是在窗体类文件中添加第二个类。

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

重现此问题的步骤[Visual Studio 17.5.0最终版]:
1.创建新项目:模板:Windows窗体应用程序(C#)。下一步。设置项目名称(即MyApplication)。下一步。框架:. NET 6.0(长期支持)。创建。
1.(Visual Studio创建项目并在设计器中打开Form1.cs)
1.向窗体添加按钮控件。保存(Ctrl + S)。确定。

  1. F7可访问表单代码。
    1.在同一命名空间中,在Form1类下面添加第二个类(即MyClass):
namespace MyApplication
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }

    public class MyClass
    {
        public string Name { get; set; }
    }
}

1.保存(Ctrl + S),确定。
1.返回设计器并更改任何内容(即移动按钮位置)。
1.保存(Ctrl + S)--〉错误:"应具有两个或多个类部件"

相关问题