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

问题描述 投票:0回答:2

昨天,当我通过 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);
        }
c# winforms visual-studio-2022 windows-forms-designer
2个回答
3
投票

似乎与this thread中报告的问题相同。我发布了一个可能的解释和解决方法。复制粘贴在这里以提高可见性:

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

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

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

  1. 创建一个新项目:模板:Windows Forms App (C#)。下一个。设置项目名称(即 MyApplication)。下一个。框架:.NET 6.0(长期支持)。创建。
  2. (Visual Studio 创建项目并在设计器中打开 Form1.cs)
  3. 添加一个按钮控件到窗体。保存(Ctrl+S)。好的。
  4. F7 访问表单代码。
  5. 在 Form1 类下面添加第二个类(即 MyClass),在相同的 命名空间:
namespace MyApplication
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }

    public class MyClass
    {
        public string Name { get; set; }
    }
}
  1. 保存(Ctrl+S)。好吧
  2. 返回设计器并更改任何内容(即移动按钮 位置)。
  3. 保存 (Ctrl+S) --> 错误:“应该有两个或更多类部分

0
投票

如果表单中有多个类,我尝试将与表单无关的类删除,保存文件,然后再次添加它们并保存。问题消失,直到你移动表格上的任何东西。

© www.soinside.com 2019 - 2024. All rights reserved.