无法使用带有 Visual Studio 2010 的 Windows 窗体恢复设计器视图窗口

Posted

技术标签:

【中文标题】无法使用带有 Visual Studio 2010 的 Windows 窗体恢复设计器视图窗口【英文标题】:Unable to get the designer view window back using windows forms with Visual Studio 2010 【发布时间】:2012-06-12 02:10:37 【问题描述】:

我正在使用 Visual Studio Express 2010 ENU SP1 编写 C# Windows 窗体应用程序。更多 VS 细节在这篇文章的底部。我最近使用设计器视图对布局进行了一些更改,然后决定我不想要这些更改,所以我关闭了设计器窗口。当我关闭项目并且更改以任何方式保存时,代码窗口仍然存在。我不关心这些变化,因为布局可以很容易地恢复,除了我找不到任何方法来重新打开可视化设计器窗口。为了恢复窗口,我尝试了以下方法:

Shift F7

在设计器代码窗口中单击鼠标右键

双击解决方案资源管理器下的设计器文件

在解决方案资源管理器下选择设计器文件并使用上下文菜单调出文件

我有一个 VS 2010 团队的评估副本,它在使用我的项目时显示完全相同的行为

我尝试了项目的备份副本,但它在 Express 和 Team 版本中都显示相同的问题

我翻遍了 MSDN、VS 论坛和整个互联网,但没有找到任何解决方案

当我第一次启动该项目时,我确实在解决方案资源管理器中重命名了 Form1.cs 文件,因为我希望应用程序的名称与 Form1 不同。这样做时,它会询问以下内容:

“您正在重命名一个文件。您要在此项目中对代码元素 'projectname' 的所有引用执行重命名吗?

我回答是的。所以现在我没有 Form1.cs 文件,而是一个包含我的“projectname.cs”和名为“projectname.Design.cs”的设计器文件的文件。这是我所做的唯一改变,我能想到的可能是相关。我确实尝试将其重命名回 Form1.cs,但这也没有解决问题。

我不得不说我是使用 Visual Studio 的新手。到目前为止,我非常喜欢它,但我现在已经死在水里了,除非我能解决这个问题,否则我将失去两周的工作。任何帮助将不胜感激。

谢谢, -汤姆

其他细节:

Windows 7 Professional SP1 32 位 x86

Microsoft Visual Studio 2010 版本 10.0.40219.1 SP1Rel 微软 .NET 框架 版本 4.0.30319 SP1Rel

安装版本:C# Express

Microsoft Visual C# 2010 01014-169-2560017-70726 微软 Visual C# 2010

Microsoft Visual C# 2010 Express - ENU Service Pack 1 (KB983509) KB983509 此服务包适用于 Microsoft Visual C# 2010 Express - ENU。 如果您稍后安装更新的服务包,此服务包将自动卸载。

【问题讨论】:

您是否尝试过制作一个新表单并复制所有内容,将其粘贴到新表单中,覆盖预先生成的内容? 不看代码很难说。但是 .design.cs 文件中的部分类与常规 .cs 中的类名称相同吗?如果没有,通常你会得到一个错误,但值得一试...... 只需右键单击 InitializeComponent();并转至声明或 F12。否则,您现在可能已经了解到您需要源代码控制,这实际上意味着:/// 不要使用代码编辑器修改此方法的内容。 【参考方案1】:

感谢您的想法。我刚刚完全重新安装了 VS 2010 Team 版本的 Express 和评估版本,它现在可以神奇地工作了。我不知道是什么导致了这个问题,也不知道是什么解决了它,但我现在回到了正轨。在这个论坛上提问之前,我可能应该这样做。

【讨论】:

恭喜修复;不管它看起来多么简单,*** 的存在是为了帮助我们学习!如果可以,请确保将您的答案标记为“已接受”,以便其他人能够从您的成功中学习。干杯~【参考方案2】:

我现在意识到这是一个相当古老的线程,但我刚刚在 VS2010 的一个项目中发生了类似的事情。无法在表单设计器中编辑表单。

最终将其归结为 .csproj 文件中的问题。有一个项目组指定编译的内容。在项目组标签中,对于我的表单,它具有...

<Compile Include="AreaChart.cs" />

需要...

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

缺少 SubType XML 标记。快速更改项目文件,我可以再次编辑表单。

【讨论】:

这在 VS2015 中为我解决了同样的问题。谢谢! 有谁知道VS为什么要这样做? [去掉子类型标签] 我的项目文件中有&lt;SubType&gt;Form&lt;/SubType&gt;,但它还没有显示出来。 我只是想评论一下这个解决方案,因为这仍然是 VS 2019 版本 16.11.4 中的一个解决方案,我不知道如何,但是 View Design 选项在我身上消失了,我再也无法访问 WinForms 设计器。我不知道为什么我会丢失 标签,但是一旦我将它们添加到一切工作正常。检查 git 历史记录并确定所做的更改已在某一时刻删除了 SubTypes。【参考方案3】:

这又是一个老话题,但网络兴趣表明很多人仍然有这个问题,但还没有解决。

我正在使用 VS2012,当我将一个库控件复制到一个单独的库中以供进一步开发时,它会产生 3 个表单。表单中的所有控件在运行时显示完美,但设计器显示一个空白表单。

问题与上述不同(完好无损),但由于这个提示,我添加了一个新表单并比较了 .csproj 文件中的条目。对于每个复制的表格,都显示了类似于以下内容的条目:

<Compile Include="MyForm.Designer.cs" />

需要的是:

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

为每个表单手动添加这些可以解决问题。

【讨论】:

感谢您的回答,它帮助解决了我的问题,尽管我遇到了另一个与我必须解决的子文件夹有关的问题,我在下面提到了。 我的 .csproj 包含这些行,但我仍然无法找到/打开设计器。 解决了我的问题。【参考方案4】:

我遇到了同样的问题,但我的问题是在 VS2012 上通过将一些表单拖放到不同的文件夹中引起的。

David 的上述解决方案有助于修复它,但并没有完全解决。

如果您在子文件夹中有表单,Compile Include 行应如下所示:

<Compile Include="SubFolderName\MyForm.Designer.cs">
    <DependentUpon>MyForm.cs</DependentUpon>
</Compile>

请注意,第一行需要子文件夹名称,第二行不需要。

我还必须更改文件下方的 EmbeddedResource 行以关联 resx 文件:

   <EmbeddedResource Include="SubFolderName\MyForm.resx">
        <DependentUpon>MyForm.cs</DependentUpon>
    </EmbeddedResource>

再次注意,第一行提到子文件夹,而第二行没有。

【讨论】:

【参考方案5】:

我现在意识到这是一个 真的 旧线程,但我遇到了同样的问题,结果发现在 csproj 文件中有 另一个 节点可能会误入歧途; .resx 表单有一个 EmbeddedResource 节点,而我的缺少子节点 Designer。这让我可以在 IDE 中再次看到表单代码。

【讨论】:

【参考方案6】:

只是另一种搞砸表单设计器的方法 - 我有这样的事情:

namespace MyProgram

    public struct SomeStruct 
        int a,b;
    
    public partial class Form1 : Form
    
        public Form1()
        
            InitializeComponent();
        
    

事实证明,即使一切正常并且没有错误,您也不能将 SomeStruct 定义放在那里。一旦我移动它,我就可以再次看到设计器视图。

【讨论】:

我遇到了同样的问题,只是它是一个类 表单类必须是文件中的第一件事。所有其他定义都需要在文件末尾。【参考方案7】:

我在使用 VB 时遇到了同样的问题。感谢您的提示。我在 UserControl 的 .vbproj 中发现了同样的问题。

我在 .vbproj 文件中有这个:

<Compile Include="AddCommunicationTask.vb" />

并改成这样:

<Compile Include="AddCommunicationTask.vb">
   <SubType>UserControl</SubType>
</Compile>

当我重新加载它时,我仍然遇到问题,并意识到我在表单类上方编写了另一个类,这导致了错误。表单类必须是第一个。我所要做的就是将我的班级向下移动,让表单班级成为最重要的班级。

我希望这对其他人有所帮助 - 祝你好运!

p.s - 我正在使用 vs Community 2015

【讨论】:

【参考方案8】:

我有类似的问题,但不完全相同。

我将表单从一个项目复制到另一个项目(使用 Windows 资源管理器),然后通过右键单击 VS 中的项目并选择 > 添加 > 现有项目将其添加到新项目中。

我的错误是为表单添加了所有三个文件(.cs、.designer.cs 和 .resx)。我应该只添加 .cs 文件。

【讨论】:

【参考方案9】:

确保您没有在设计器部分类之前声明任何类。 .cs 文件需要将部分设计器类作为文件中的第一个类。

public partial class frmWidget : Form



public class SomeClass


现在SomeClass 不能位于部分frmWidget 类之上。重新安排后,它将自动修复设计器问题,无需重新启动 VS 或重新创建表单。我希望这会有所帮助。

【讨论】:

C#/WinForms 新手,VS2017 社区为我解决了这个问题。【参考方案10】:

虽然这是一个很老的话题,但我想分享我的案例和解决方案。

我遇到了同样的问题,但我在Form 中使用了 Telerik WinForms 组件。直到我意识到 RadControls for WinForms 的设计时功能是在 Telerik.WinControls.UI.Design.dll 程序集中实现的,我才能看到设计器。然后我添加参考,现在设计师出现了。

【讨论】:

【参考方案11】:

我遇到了同样的问题,我通过双击解决方案资源管理器中的 Form1.cs 文件(不是 Form1.Designer.cs 文件)返回了(设计)窗口。

【讨论】:

【参考方案12】:

尝试了这个问题中提到的所有建议,Visual Studio Community 2017 没有任何效果

没有 Shift-F7 快照 没有可见的上下文菜单项 不要双击 MainForm.cs MainForm.cs 中没有错误的类顺序 mysolutionname.csproj 文件中没有错误条目

但这对我有用

    右键单击您的 MainForm.cs 文件(或“Form.cs”,具体取决于您的命名方式) '从项目中排除'。这会暂时删除 MainForm.csMainForm.Designer.csMainForm.resx 使用“添加»现有项目”并选择MainForm.cs。这将重新包含所有三个文件。当然,您应该将它们添加回原来的文件夹中 双击MainForm.cs 会神奇地打开设计视图

【讨论】:

【参考方案13】:

我不小心删除了我的 Form1[Design] 文件。双击 Form1.h 文件什么也没做。程序运行,按钮文本框和标签都在那里,只是没有 Form1[Design] 可见以进行编辑。我在下面修复了它: Header Files 选择 Form1.h 并转到 Form1.H 文件属性。在下拉菜单中的文件类型下将其更改为“C++ 表单”我关闭并重新启动程序。您现在应该可以双击 Form1.h 并查看您的 Form1[设计]。

【讨论】:

【参考方案14】:

自从我将项目创建为 C# Windows Form App (.NET Core) 后,我遇到了同样的问题。我决定将其创建为 C# Windows Form App (.NET Framework),现在我可以查看和使用 Designer .注意使用“Core”与“Framework”的区别

希望对你有所帮助。

【讨论】:

.Net Core 有自己的设计器,您必须单独安装。更多信息:devblogs.microsoft.com/dotnet/…【参考方案15】:

我在 VS 2010 中遇到了同样的问题。我无法查看设计器表单 (Connect.CS)。

我已经有了

<Compile Include="Connect.cs">
  <SubType>Code</SubType>
</Compile>
<Compile Include="Connect.Designer.cs">
  <DependentUpon>Connect.cs</DependentUpon>
</Compile>

ItemGroup 标签中的标签,但我仍然无法查看设计器。

我正在使用命名空间指令“使用 RFCOMAPILib”,其中已经有一个 Form 元素,它与 System.Windows.Forms.Form 发生冲突。

将“公共部分类连接:表单”替换为“公共部分类连接:System.Windows.Forms.Form”后,我现在可以查看设计器。

【讨论】:

以上是关于无法使用带有 Visual Studio 2010 的 Windows 窗体恢复设计器视图窗口的主要内容,如果未能解决你的问题,请参考以下文章

带有 SQL 的 Visual Studio 2010 探查器

使用带有 C#、Visual Studio 2010 的 PhoneNumbers.dll 验证电话号码

如何通过 HTTP Get 使用 WCF 服务(在 Visual Studio 2010 中)

在 Visual Studio 2010 (utility.obj) 中使用带有 VC++ 的 QuickFix 时出错

使用带有 fftw3 Visual Studio 2010 的 openCV 的链接器错误

如何将项目从 Visual C++ 6.0 转换为 Visual Studio Express 2010?