在VS2010中创建表单副本后恢复WinForm设计

时间:2013-04-23 17:01:55

标签: winforms visual-studio-2010

表单包含主要设计,并包含该表单的代码文件中的所有代码。我刚刚复制了该表单并将其粘贴到Visual Studio的解决方案资源管理器中的相同目录中,其中存在原始表单。它现在显示与资源相关的错误。当我前进时,它显示错误:

  

错误MSB3105:“资源”参数中多次指定了项目“obj \ x86 \ Debug \ BAS.frmGI1.resources”。

现在我失去了主要形式的设计。我如何恢复原始表格的设计?

2 个答案:

答案 0 :(得分:4)

由于您制作了原始表单的副本,因此所有内容(类,设计器代码等)的复制完全相同。与任何其他类一样,如果您使用完全相同的名称定义了两个类;他们会发生冲突。同样,如果您有两个部分类的文件,并且在两个文件中都声明了一个带有相同名称的变量;它会发生冲突。


你所做的是导致设计师发生上述冲突......并且不需要恐慌(或诉诸版本控制或其他 - 没有任何双关语意图criticalfix's answer)。

接下来,让我们修复这些类名!

  1. 只需右键单击副本,然后Exclude from Project;

  2. 浏览到您的project's directory;

  3. 使用您喜欢的文字编辑器打开 FormName.Designer.vb (或 FormName.Designer.cs 进行C#)(但不是(!)with Visual Studio);

  4. 在此示例中找到您的表单类( MySuperAwesomeForm ):

    Partial Class MySuperAwesomeForm
    

    在C#中:

    partial class MySuperAwesomeForm // FormName.Designer.cs
    
    public partial class MySuperAwesomeForm : Form // FormName.cs
    
  5. MySuperAwesomeForm 的所有实例替换为其他名称;示例: MySuperAwesomeFormTwo ;

  6. 现在使用您喜欢的文本编辑器打开 FormName.vb (或 FormName.cs 进行C#)(再次确保它(!)Visual Studio);

  7. MySuperAwesomeForm 的所有实例替换为步骤4中使用的相同值;例如: MySuperAwesomeFormTwo ;

    • 保存并关闭这两个文件(如果它们仍处于打开状态。
  8. 从技术上讲,您只需要在每个文件的前几行之一( MySuperAwesomeForm 替换 MySuperAwesomeFormTwo Public Class partial class public partial class 开头。

    最后,返回Visual Studio,然后add the newly re-classed form返回项目。

答案 1 :(得分:2)

您可以复制表单,但必须更改其名称(文件名和对象名称),以免与原始名称混淆。然后,从Visual Studio中,您将添加表单...现有...然后选择新表单。

您的错误消息提到了obj目录,因此可能在构建期间发生了错误。我会查看项目的资源,看看哪些内容可能是重复的,如果它超出了您复制的原始文件。

如果您丢失了原始源代码,则可能无法恢复。我希望你使用某种形式的源代码控制(VSS,TFS等),或者至少是经常复制到备份的网络磁盘?