在Visual Studio 2015中(使用C#),无法在设计器中打开表单。

4

这取决于您的项目中存在的问题。这从来没有工作过吗?即使在新的Windows Forms项目中也不行吗? - Romano Zumbé
1
在您的屏幕截图中,您可以看到VS无法将Form1.cs识别为窗体。那个文件中的第一个类是否派生自“Form”? - Romano Zumbé
我的第一个问题怎么样? - Romano Zumbé
抱歉,刚刚意识到我还没有回复。在一个新项目中,设计视图确实会打开。那么在当前项目中可能是错误的代码导致了这个问题吗? - Sam Wrayn
有一个 Form1.Designer.cs 文件吗? - Chris Dunaway
显示剩余2条评论
9个回答

21

检查 Form1.Designer.csForm1.cs 文件,确保在你的 partial class Form1{ 之前没有放置另一个类在文件顶部,因为设计器只会在文件中定义第一类是 Form 类时才加载。

你在答案评论中提到了这个解决方案,但我尝试在编辑 .csproj 文件之前进行编辑,后来才意识到我的更改被还原了,我需要移除我懒惰地添加到文件顶部的 myCustomPropertyView 类。

Visual Studio 还有些奇怪(告诉我已经完全注释掉的行上有错误),但一旦我关闭并重新打开 Visual Studio,就可以正常运行了。


是的。在“partial class Form1 {”的顶部添加一个小助手类很诱人 - 只需将其放在底部即可... - John Silence
当您在违反规则后第一次尝试打开Form1.cs时,表单编辑器中的错误消息就像所说的那样。此后,您将无法在表单编辑器中打开它并查看错误消息。 - jw_
神啊,谢谢您!我一直想不通为什么设计器消失了。感谢您的评论,现在我知道不能在Form1之前放置另一个类了。谢谢! - Elizabeth Grant
哇,谢谢你!我通常会把所有的小助手类放在代码的顶部,很少在Win Forms项目上工作。这个帮了我很多,省去了很多烦恼。再次感谢你! - undefined

12

尝试以下步骤:

1)右键单击“解决方案资源管理器”。

2)转到没有“设计视图”的文件。

3)从项目中排除它。

4)重新包含它到项目中。

这对我起了作用。


1
那对我也起作用了。谢谢,我已经试了一个小时让该死的表单在设计师中显示。 - RB Davidson
你好,我在排除表单后没有包含选项。你的意思是我应该添加现有项目吗? - Mehran Sarrafi
嗨,不是添加现有项目,而是从其他项目包含它。 - EduardoUstarez
1
对我有用。Shonky,很多,MS? - stigzler
没有任何.cs文件,也没有添加现有项的选项,只有新建项。 - Jindrich Vavruska
显示剩余2条评论

4

我认为你的项目文件(.csproj)可能会有问题。如果你用文本编辑器打开它,你会发现它只是一个XML文件,虽然可以被编辑,但大多数情况下不应该这样做。其中有多个<ItemGroup>节点。其中一个子节点(可能)如下:

<Compile Include="Form1.cs" />

将其替换为:

<Compile Include="Form1.cs">
  <SubType>Form</SubType>
</Compile>

编辑:

还应该有这两个节点:

<Compile Include="Form1.Designer.cs">
  <DependentUpon>Form1.cs</DependentUpon>
</Compile>

<EmbeddedResource Include="Form1.resx">
  <DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>

我按照这些步骤操作,但仍然无法显示设计视图。当我在检查了设计视图后返回到csproj文件时,代码已经恢复为您建议的编辑之前的状态,只有<Compile Include="Form1.cs" />。 - Sam Wrayn
2
结果发现错误是 Form1 类可以被设计,但不是文件中的第一个类... 我第一次没有读到这个,最终陷入了一场无用功。感谢所有的帮助! - Sam Wrayn
就像我在我的第二个评论中所问的那样 ;-) - Romano Zumbé
这个不起作用,正如Sam Wrayn所说,它会返回到上一个表单。正确的答案是确保Forms1是源文件中的第一个类。 - jw_
但是这个答案是将您的项目恢复到在尝试打开问题表单之前的状态的方法,如果您之前错过了错误消息,现在可以看到它。 - jw_

2
最近,一个与 .Net Core 3.0 兼容的 Windows Forms 已发布。
该窗体的设计器未包含在 Visual Studio 包中。因此,如果您想打开 .Net Core 版本的 Windows Forms 设计器,则需要先安装 VSIX 扩展。您可以在此处下载扩展: https://aka.ms/winforms-designer 我不知道这个扩展是否特别适用于 vs15,因此如果您无法安装它,请尝试使用不是 .Net Core 版本的 winforms。
我的信息来源: https://devblogs.microsoft.com/dotnet/introducing-net-core-windows-forms-designer-preview-1/

1

尝试重新启动Visual Studio,重新构建解决方案并运行它


0

我曾经遇到过同样的问题,通过创建一个新的项目来解决它,但这次是一个 .NetFrameWork 应用程序而不是 .NetCore。然后当我打开新项目时,我立即得到了设计视图(如预期)和其中的新 Form1...;-)

所以我想问题在于创建应用程序时选择了错误的模板...

希望这可以帮助到你... John


0
在我的情况下,是因为我声明了一个辅助类(用于对话框结果),并将此声明放在了窗体.cs文件的顶部。显然,这让Visual Studio感到困惑,因为它期望在文件中首先找到窗体类。对我来说,这似乎相当愚蠢,因为它肯定可以在文件中向下搜索...
将辅助类的声明移动到窗体类之后,使得Visual Studio能够恢复在解决方案资源管理器中显示.cs文件的窗体图标,并在右键菜单中显示“查看设计器”选项。

0
  1. 首先,在同一目录下创建一个新表单。
  2. 将项目中的两个表单(NEWFORM和FORMERR)排除。
  3. 然后在文件资源管理器中打开文件夹。
  4. 交换名称FORMERR->NEWFORM和反之。
  5. 最后,包含NEWFORM(FORMERR以名称NEWFORM包含) => 对不起,我的英语不好。

嗨,请按照以下步骤撰写好的回答:如何撰写好的答案? - Willie Cheng

-2

工具 -> 导入和导出设置 -> 重置所有设置 -> 再次尝试 Shift + F7


问题不在于缺少键盘快捷方式,而是VS无法将文件Form1.cs识别为“表单”。请查看截图。 - Romano Zumbé
@RomanoZumbé 啊,抱歉我只是粗略地阅读了一下,这个类是继承自哪个类吗? - Peter
没有主意,这也是我问的问题 :-D - Romano Zumbé
@RomanoZumbé,如果你打开这个类文件,在顶部,它会说Form1 : Form吗? - Peter
我不知道,我不是原帖作者。你需要问他。 - Romano Zumbé
@Peter 是的,它确实继承了 Form。 - Sam Wrayn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接