Windows 窗体设计器错误页(Windows 窗体 .NET)

如果 Windows 窗体设计器由于代码、第三方组件或其他位置的错误而未能加载,将显示错误页而不是设计器。 此错误页不一定表示设计器中的 bug。 bug 可能位于代码隐藏文件中的某个位置。 错误显示在可折叠的黄色栏中,其中带有用于跳转到代码页上错误位置的链接。

Visual Studio 中显示某个按钮的事件缺失的设计器错误选项卡。

错误窗口

错误窗口由不同的部分组成。

  • 黄色栏

    将为每个错误创建黄色可折叠栏,并按说明进行分组。 该栏描述阻止设计器加载属性的编译器错误。 其中包含以下详细信息:

    • 错误所在的文件。
    • 文件中出错的列和行。
    • 错误代码。
    • 错误的描述。
    • 直接导航到错误的链接。
  • 此错误的实例

    黄色错误栏展开后,会列出错误的每个实例。 许多错误类型采用以下格式包含确切位置:<项目名称> <窗体名称> 行:<行号> 列:<列号>。 如果调用堆栈与错误关联,则可选择“显示调用堆栈”链接以进行查看。 检查调用堆栈可以进一步帮助你解决这个错误。

    重要

    错误的元素可能因所使用的代码语言而异。

  • 有关此错误的帮助

    如果提供了针对错误的帮助文章,请选择“MSDN 帮助”链接,直接导航到帮助页。

  • 有关此错误的论坛帖子

    选择“在 MSDN 论坛中搜索与此错误相关的帖子”链接,以导航到旧的 Microsoft 开发人员网络论坛。 可以在 Microsoft Q&AStackOverflow 论坛上搜索或提问。

首先要采取的措施

通常可以通过清理和重新生成项目或解决方案来清除错误。

  1. 找到“解决方案资源管理器”窗口。
  2. 右键单击解决方案或项目,然后选择“清理”。
  3. 右键单击解决方案或项目,然后选择“重新生成”。

还可以尝试从项目文件夹中删除“bin”和“obj”文件夹。 这可能会清除临时文件或导致发生“还原”操作,从而修复错误依赖项。

使用以下部分对常见的设计时错误进行会审。

常见设计时错误

此部分列出了可能会遇到的一些错误。

当前上下文中不存在名称“<名称>”

最常见的情况是,当删除或重命名设计器文件引用的代码隐藏文件中的事件处理程序时,你会看到此错误。 打开 <form>.designer.<langauge> 代码文件并从窗体或控件中删除事件处理程序。

<标识符名称> 不是有效标识符

此错误指示字段、方法、事件或对象未正确命名。

“<名称>”已存在于“<项目名称>”中

你为项目中已存在的继承窗体指定了名称。 若要更正此错误,请为继承窗体提供唯一名称。

“<工具箱选项卡名称>”不是工具箱类别

第三方设计器尝试访问工具箱上不存在的选项卡。 请联系组件供应商。

请求的语言分析程序未安装

Visual Studio 尝试加载为文件类型注册的设计器,但无法加载。 这很可能是由于安装过程中发生了错误。 请联系你用于修补程序的语言的供应商。

缺少生成和分析源代码所需的服务

此错误是第三方组件的问题。 请联系组件供应商。

尝试创建“<对象名称>”的实例时发生异常

第三方设计器请求 Visual Studio 创建对象,但对象引发错误。 请联系组件供应商。

另一个编辑器以不兼容的模式打开了“<文档名称>”

如果尝试打开已在另一个编辑器中打开的文件,则会出现此错误。 会显示已打开文件的编辑器。 若要更正此错误,请关闭打开文件的编辑器,然后重试。

另一个编辑器对“<文档名称>”进行了更改

关闭设计器,然后重新打开才能使更改生效。 通常,Visual Studio 会在进行更改后自动重新加载设计器。 但是,其他设计器(如第三方组件设计器)可能不支持重新加载行为。 在这种情况下,Visual Studio 会提示你手动关闭并重新打开设计器。

另一个编辑器以不兼容的模式打开了此文件

此消息类似于“另一个编辑器以不兼容的模式打开了‘<文档名称>’”,但 Visual Studio 无法确定文件名。 若要更正此错误,请关闭打开文件的编辑器,然后重试。

数组秩“<数组中的秩>”过高

在设计器分析的代码块中,Visual Studio 仅支持单维数组。 多维数组在此区域之外有效。

无法打开程序集“<程序集名称>”

尝试打开无法打开的文件时,会出现此错误消息。 请验证该文件存在并且是有效程序集。

错误的元素类型。 此序列化程序要求元素类型为“<类型名称>”

此错误是第三方组件的问题。 请联系组件供应商。

此时无法访问 Visual Studio 工具箱

Visual Studio 在工具箱不可用时对其进行了调用。 如果看到此错误,请使用报告问题来记录问题。

“<事件名称>”事件是只读的,因此无法将事件处理程序绑定到该事件

尝试将事件连接到从基类继承的控件时,通常会出现此错误。 如果控件的成员变量是私有变量,则 Visual Studio 无法将事件连接到方法。 私有继承控件不能绑定额外的事件。

请求的组件不是设计容器的成员,因此无法创建该组件的方法名称

Visual Studio 尝试将事件处理程序添加到设计器中没有成员变量的组件。 请联系组件供应商。

对象“<名称>”已命名为“<名称>”,因此无法命名该对象

此错误是 Visual Studio 序列化程序中的内部错误。 它指示序列化程序尝试对一个对象命名两次,此操作不受支持。 如果看到此错误,请使用报告问题来记录问题。

无法移除或损坏继承的组件“<组件名称>”

继承的控件由其继承类所拥有。 必须在控件的起源类中更改继承的控件。 因而无法重命名或销毁它。

类别“<工具箱选项卡名称>”没有类“<>类名”的工具

设计器尝试引用特定工具箱选项卡上的类,但该类不存在。 请联系组件供应商。

类“<类名>”没有匹配的构造函数

第三方设计器要求 Visual Studio 在不存在的构造函数中创建具有特定参数的对象。 请联系组件供应商。

属性“<属性名称>”的代码生成失败

此错误是错误的泛型包装器。 此消息附带的错误字符串会提供有关错误消息的更多详细信息,并提供指向更具体帮助文章的链接。 若要更正此错误,请解决追加到此错误的错误消息中指定的错误。

组件“<组件名称>”未在其构造函数中调用 container.Add()

此消息与窗体上加载或放置的组件中的错误相关。 它指示组件未将自己添加到其容器控件(无论是其他控件还是窗体)。 设计器会继续工作,但组件在运行时可能会出现问题。

若要更正错误,请联系组件供应商。 或者,如果是创建的组件,请在组件构造函数中调用 IContainer.Add 方法。

组件名称不能为空

尝试将组件重命名为空值时,会出现此错误。

未能访问变量“<变量名称>”,因为它尚未初始化

此错误可能是由于两种情形导致的。 第三方组件供应商分发的控件或组件有问题,或者你编写的代码在组件之间具有递归依赖项。

若要更正此错误,请确保代码没有递归依赖项。 如果不存在此类问题,请记下错误消息的确切文本并联系组件供应商。

找不到类型“<类型名称>”

错误消息:“找不到类型‘<类型名称>’。 请确保已引用包含此类型的程序集。 如果此类型为开发项目的一部分,请确保已成功生成该项目。”

发生此错误是因为找不到引用。 请确保引用错误消息中指示的类型,并且还引用了该类型所需的所有程序集。 通常,问题是解决方案中的控件未生成。 若要生成,请从“生成”菜单中选择“生成解决方案”。 否则,如果控件已生成,请从解决方案资源管理器中“引用”或“依赖项”文件夹的右键单击菜单中手动添加引用

无法加载类型“<类型名称>”

Visual Studio 尝试关联事件处理方法,但找不到该方法的一个或多个参数类型。 此错误通常是由于缺少引用导致的。 若要更正此错误,请将包含类型的引用添加到项目,然后重试。

找不到继承的组件的项目项模板

Visual Studio 中继承表单的模板不可用。 如果看到此错误,请使用报告问题来记录问题。

委托类“<类名>”没有 invoke 方法。 此类是否为委托

Visual Studio 尝试创建事件处理程序,但事件类型有问题。 如果事件是通过不符合 CLS 的语言所创建,则可能会发生此错误。 请联系组件供应商。

成员“<成员名称>”的重复声明

出现此错误的原因是成员变量已声明两次(例如,在代码中声明了两个名为 Button1 的控件)。 名称必须在继承表单间唯一。 此外,名称不能仅通过大小写来区分。

从区域性“<区域性名称>”的资源文件中读取资源时出错

如果项目中存在错误的 .resx 文件,则可能会发生此错误。

若要更正该错误,请执行以下操作:

  1. 选择解决方案资源管理器中的“显示所有文件”按钮以查看与解决方案关联的 .resx 文件。
  2. 通过右键单击 .resx 文件并选择“打开”,在 XML 编辑器中加载 .resx 文件
  3. 手动编辑 .resx 文件以解决错误。

从默认区域性“<区域性名称>”的资源文件中读取资源时出错

如果对于默认区域性,项目中存在错误的 .resx 文件,则可能会发生此错误。

若要更正该错误,请执行以下操作:

  1. 选择解决方案资源管理器中的“显示所有文件”按钮以查看与解决方案关联的 .resx 文件。
  2. 通过右键单击 .resx 文件并选择“打开”,在 XML 编辑器中加载 .resx 文件
  3. 手动编辑 .resx 文件以解决错误。

未能分析方法“<方法名称>”

错误消息:“未能分析方法‘<方法名称>’。 分析器报告以下错误:‘<错误字符串>’。 请查看任务列表以了解潜在的错误。”

这是针对分析过程中出现的问题的常规错误消息。 这些错误通常是由于语法错误导致的。 有关与错误相关的特定消息,请参阅任务列表。

无效的组件名称:“<组件名称>”

你尝试将组件重命名为对该语言无效的值。 若要更正此错误,请命名组件,使其符合该语言的命名规则。

类型“<类名>”由同一文件中的几个分部类构成

使用 partial 关键字在多个文件中定义类时,在每个文件中只能有一个分部定义。

若要更正此错误,请从文件中移除类的所有分部定义(只保留一个)。

未能找到程序集“<程序集名称>”

此错误类似于“找不到类型‘<类型名称>’”,但发生此错误通常是由于元数据属性。 若要更正此错误,请检查是否引用了属性使用的所有程序集。

程序集名称“<程序集名称>”无效

组件请求了特定程序集,但组件提供的名称不是有效程序集名称。 请联系组件供应商。

无法设计基类“<类名>”

Visual Studio 加载了类,但无法设计类,因为类的实现者未提供设计器。 如果类支持设计器,请确保不存在会导致设计器中的显示问题的问题(例如编译器错误)。 此外,请确保对类的所有引用都正确且所有类名都拼写正确。 否则,如果类不可设计,请在代码视图中进行编辑。

未能加载基类“<类名>”

项目中未引用类,因此 Visual Studio 无法加载它。 若要更正此错误,请在项目中添加对类的引用,然后关闭并重新打开 Windows 窗体设计器窗口。

不能在此版本的 Visual Studio 中设计“<类名>”类

此控件或组件的设计器不支持与 Visual Studio 相同的类型。 请联系组件供应商。

该类名不是此语言的有效标识符

由用户创建的源代码具有对所用语言无效的类名。 若要更正此错误,请命名类,使其符合语言要求。

组件包含对“<引用名称>”的循环引用,因此无法添加该组件

无法将控件或组件添加到自身。 可能出现此问题的另一种情况是,如果窗体(例如 Form1)的 InitializeComponent 方法中有代码创建 Form1 的另一个实例。

此时无法修改设计器

当编辑器中的文件标记为只读时,会发生此错误。 确保文件未标记为只读且应用程序未在运行。

由于文件中的类都不能进行设计,因此无法为该文件显示设计器

当 Visual Studio 找不到满足设计器要求的基类时,会发生此错误。 窗体和控件必须派生自支持设计器的基类。 如果要从继承窗体或控件派生,请确保已生成项目。

未安装基类“<类名>”的设计器

Visual Studio 无法加载类的设计器。 如果看到此错误,请使用报告问题来记录问题。

设计器必须创建类型“<类型名称>”的实例,但该类型已声明为抽象,因此设计器无法创建该类型的实例

发生此错误是因为传递给设计器的对象基类是不允许的抽象类。

无法在设计器中加载该文件

此文件的基类不支持任何设计器。 解决方法是使用代码视图处理文件。 在解决方案资源管理器中右键单击文件,然后选择“查看代码”

该文件的语言不支持必需的代码分析和生成服务

错误消息:“该文件的语言不支持必需的代码分析和生成服务。 确保你正在打开的文件是项目的成员,然后尝试重新打开该文件。

此错误很可能是由于打开不支持设计器的项目中的文件所导致的。

语言分析器类“<类名>”没有正确实现

错误消息:“语言分析器类‘<类名>’没有正确实现。 请和供应商联系以获得更新的分析器模块。”

所使用的语言注册了不是从正确基类派生的设计器类。 请联系你使用的语言的供应商。

名称“<名称>”已由另一个对象使用

这是 Visual Studio 序列化程序中的内部错误。 如果看到此错误,请使用报告问题来记录问题。

对象“<对象名称>”没有实现 IComponent 接口

Visual Studio 尝试创建组件,但创建的对象未实现 IComponent 接口。 请联系组件供应商以获取修补程序。

对象“<对象名称>”为属性“<属性名称>”返回了 null,而这是不允许的

某些 .NET 属性应始终返回对象。 例如,窗体的控件集合应始终返回对象,即使其中没有控件也是如此

若要更正此错误,请确保错误中指定的属性不为 null。

序列化数据对象的类型不正确

序列化程序提供的数据对象不是与所使用的当前序列化程序匹配的类型实例。 请联系组件供应商。

需要服务“<服务名称>”,但未能找到它

Visual Studio 所需的服务不可用。 如果尝试加载不支持该设计器的项目,请改为使用代码编辑器进行更改。 否则,如果看到此错误,请使用报告问题来记录问题。

服务实例必须从“<接口名称>”派生或实现它

此错误指示组件或组件设计器调用了 AddService 方法,该方法需要接口和对象,但指定的对象未实现指定接口。 请联系组件供应商。

未能修改代码窗口中的文本

如果 Visual Studio 由于磁盘空间或内存问题而无法编辑文件,或者文件标记为只读,则会发生此错误。

工具箱枚举数对象仅支持一次检索一个项

如果看到此错误,请使用报告问题来记录问题。

未能从工具箱中检索到“<组件名称>”的工具箱项

相关组件在 Visual Studio 访问它时引发了异常。 请联系组件供应商。

未能从工具箱中检索到“<工具箱项名称>”的工具箱项

如果工具箱项中的数据损坏或组件版本已更改,则会发生此错误。 请尝试从工具箱中移除该项,然后再将其添加回工具箱。

未能找到类型“<类型名称>”

当加载设计器时,Visual Studio 未能找到类型。 请确保已引用包含该类型的程序集。 如果该程序集是当前开发项目的一部分,请确保已生成了该项目。

只能从主应用程序线程调用类型解析服务

Visual Studio 尝试从错误的线程访问所需资源。 当用于创建设计器的代码从主应用程序线程以外的线程调用类型解析服务时,会显示此错误。 若要更正此错误,请从正确的线程调用服务或联系组件供应商。

变量“<变量名称>”未声明或从未赋值

源代码引用了未声明或赋值的变量(如 Button1)。 如果变量未赋值,则此消息显示为警告,而不是错误。

菜单命令“<菜单命令名称>”已经有一个命令处理程序

如果第三方设计器将已有处理程序的命令添加到命令表中,则会出现此错误。 请联系组件供应商。

已有一个名为“<组件名称>”的组件

错误消息:“已有一个名为‘<组件名称>’的组件。 组件的名称必须是唯一的,而且名称必须不区分大小写。 名称也不能与继承的类中的任何组件名称冲突。”

当在属性窗口中更改了组件的名称时,会出现此错误消息。 若要更正此错误,请确保所有组件名称都是唯一的,不区分大小写,并且不会与继承类中任何组件的名称冲突。

已有一个工具箱项创建者注册了格式“<格式名称>”

第三方组件对工具箱选项卡上的项进行了回调,但该项已包含回调。 请联系组件供应商。

此语言引擎不支持用于加载设计器的 CodeModel

此消息类似于“该文件的语言不支持必需的代码分析和生成服务”,但此消息涉及内部注册问题。 如果看到此错误,请使用报告问题来记录问题。

类型“<类型名称>”不具有带有“<参数类型名称>”类型参数的构造函数

Visual Studio 找不到具有匹配参数的构造函数。 此错误可能是由于为构造函数提供的类型不是所需类型所导致的。 例如,Point 构造函数可能采用两个整数。 如果提供了 float 类型,则会引发此错误。

若要更正此错误,请使用其他构造函数,或是显式强制转换参数类型,使其与构造函数提供的类型匹配。

无法添加对当前应用程序的引用“<引用名称>”

Visual Studio 无法添加引用。 若要更正此错误,请检查是否尚未引用该引用的不同版本。

无法签出当前文件

将当前签入的文件更改为源代码管理时,会出现此错误。 通常,Visual Studio 会提供文件签出对话框,以便用户可以签出文件。 这次文件未签出,可能是由于签出期间发生合并冲突。 若要更正此错误,请确保文件未锁定,然后尝试手动签出文件。

无法找到名为“<选项对话框选项卡名称>”的页

当组件设计器使用不存在的名称请求访问“选项”对话框中的页时,会出现此错误。 请联系组件供应商。

无法在页“<选项对话框选项卡名称>”上找到属性“<属性名称>”

当组件设计器请求访问“选项”对话框中某页上的特定值,但该值不存在时,会出现此错误。 请联系组件供应商。

由于该文件内的类不是从可进行可视化设计的类继承,因此 Visual Studio 无法为该文件打开设计器

Visual Studio 加载了类,但未能加载该类的设计器。 Visual Studio 要求设计器使用文件中的第一个类。 若要更正此错误,请移动类代码以使其成为文件中的第一个类,然后重新加载该设计器。

Visual Studio 无法保存或加载类型“<类型名称>”的实例

这是第三方组件的问题。 请联系组件供应商。

Visual Studio 无法在设计视图中打开“<文档名称>”

此错误指示项目的语言不支持设计器,会在你尝试在“打开文件”对话框中或从解决方案资源管理器打开文件时出现。 请改为在代码视图中编辑文件。

Visual Studio 未能找到用于“<类型名称>”类型的类的设计器

Visual Studio 加载了类,但无法设计该类。 请改为通过右键单击类并选择“查看代码”,在代码视图中编辑类