【问题标题】:In Visual Studio 2013 when I add an existing form then controls don't appear on designer在 Visual Studio 2013 中,当我添加现有表单时,控件不会出现在设计器上
【发布时间】:2016-08-23 15:22:56
【问题描述】:

我正在开发一个 Windows 窗体应用程序。我开始一个新项目。我从新项目中删除了 Form1 的东西。我从解决方案资源管理器中的现有内容中添加,然后从另一个项目中选择 Form1.cs、Form1.Designer.cs 和 Form1.resx。当我查看设计器 Form1 时,它看起来是空白的,就像一个没有任何控件出现的新设计器一样。该程序仍然可以正常编译,并且所有控件都完好无损。我在某个地方错过了一步吗?我已经关闭并重新打开了项目等。这种情况每次都会重复发生,所以我相信我遗漏了一些东西,但在这里搜索或网络的其他部分并没有为我提供解决方案。也许它只是假设每个人都已经知道了?

我只是在学习 c# 和 Visual Studio,所以希望我没有错过一些愚蠢的东西。我正在遵循如何从一本书中做到这一点的方向。一些项目被重复用于教授一个新想法,因此他们让您开始一个新项目并从原始项目中添加现有项目,然后处理新想法。

【问题讨论】:

  • 如果你删除Form1 - 你如何添加它from existing?如果你开始a new project,为什么它不会是空白的?
  • 在选择了命名空间的解决方案资源管理器中,我右键单击 > 添加 > 现有项目 - 然后选择已经从另一个项目编码和设计的 Form1 项目。如果 Form1 已经存在,它在一个新项目中执行,我会收到一个错误,所以我在添加现有项目之前将其删除。
  • 我认为没有必要手动添加Form1.Designer.csForm1.resx。我认为当您手动添加Form1.cs 时,它足够聪明,可以完成剩下的工作。
  • 感谢 Icemanind!我尝试只从另一个项目中添加 Form1 而没有其他文件。这带来了其他一切,并且控制都在那里。我也尝试不删除 Form1,而只是从现有项目中添加一个 Form1.cs。首先它问我是否想更换我现在的。当我选择了多个文件时,它只是告诉我不存在。在我说好的之后,它告诉我它会抓住我说好的设计师和 resx,然后它意识到它需要重建它和 walla!
  • icemanind 将其作为答案,我可以将其标记为解决方案。我按照 c# Head First 书籍 fwiw 中的指示进行操作。他们并没有确切地说添加我可能过度考虑的所有项目。他们说添加 Form1.cs 并注明我还需要 Form1.designer.cs 和 Form1.resx 文件。我认为这意味着我也应该选择它们。我现在意识到他们的意思是那些也会最终过来。

标签: c# visual-studio visual-studio-2013 windows-forms-designer form-control


【解决方案1】:

在 VS 2013 中,我选择了“添加现有项目”并只选择了 .cs 文件,不要添加 *.Designer.cs 和 *.resx 文件。然后等待几分钟并重新启动VS2013。 Designer.cs 和 resx 文件显示为与表单相关联,但它们被排除在外。我右键单击它们并选择“包含在项目中”。然后效果很好。

【讨论】:

    【解决方案2】:

    确保您正在加载您认为正在加载的Form1

    默认情况下,Visual Studio 2013(在 Windows 7 上)将在 Documents (C:\Users*Your user name*\Documents) 中创建一个名为“Projects”的文件夹。每当您通过转到 File->New Project 从 Visual Studio 中创建新项目时,Visual Studio 将(默认情况下)在 Projects 文件夹中使用项目名称创建一个新文件夹。

    我认为当您“删除”Form1 时,您实际上并没有删除它,只是将其从项目中删除。当您添加 Form1 时,您只是从同一个项目文件夹中选择它,而实际上您想从不同的项目文件夹中加载它。

    试试这个:在您当前的项目(删除 Form1 然后添加它的项目)中,在解决方案资源管理器中,右键单击该项目,然后选择“在文件资源管理器中打开文件夹”。

    这将打开磁盘上的项目文件夹。现在,从 Visual Studio 中删除 Form1.cs,然后切换回项目文件夹。如果 Form1.cs 仍在该项目文件夹中,那么您只是将其从项目中删除。实际文件仍然存在于磁盘上。添加现有项目时,Visual Studio 通常会默认为选定的项目文件夹。

    我非常怀疑您真正要查找的 Form1 位于不同的项目文件夹中。在不知道您正在阅读的书籍或教程的情况下,我无法为您提供有关您想要的 Form1 的位置的任何提示。

    【讨论】:

    • 不,当我在解决方案资源管理器中右键单击 Form1.cs 时,它实际上已从项目中删除,并且它的文件也被删除。我从另一个项目中正确选择了 Form1。请记住,从另一个项目添加 Form1 后,我仍然可以正常编译和运行代码。只是当我在设计器中打开 Form1 时,没有显示任何控件。如果我在 Form1.cs[Design] 中执行拖动和调整窗口大小等操作,然后尝试再次启动程序,我会收到错误类型“TestFormAdd.Form1”已经定义了一个名为“InitializeComponent”的成员,具有相同的参数类型
    • 啊。这更有意义。在 Visual Studio (Ctrl-Shift-F) 中全局搜索“InitializeComponent()”。应该正好有 2 个结果:一个在 Form1.cs 中,一个在 Form1.designer.cs 中。如果有 2 个或更多具有相同文件名的结果,请删除重复文件。你的项目中大概有2个Form1.designer.cs文件,编译器不知道如何处理多个InitializeComponent方法。
    • 可能与问题有关。当有一个 Form is VS 时,它会显示为这样。
      !Original
      但在新的形式中,它不是这样嵌套的。
      !New
    • 感谢 CurtisHx IDE 似乎向 Form1.cs 添加了第二个 InitializeComponent() 这让我可以再次编译,但 [Design] 仍然没有显示 Form1 的控件,如果再次发生同样的事情我做了调整大小添加另一个控件等操作。我没有在项目文件夹中找到任何重复的文件名,例如在子目录或任何内容中。
    • 您能否在添加 Form1 后通过项目截图更新您的问题,并发布 Form1.cs、Form1.designer.cs 和 Program.cs 中的代码?
    猜你喜欢
    • 2015-05-21
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 2013-11-27
    相关资源
    最近更新 更多