2013-04-23 74 views
1

表单包含主要设计,并在该表单的代码文件中包含所有代码。我只是复制了该表单并将其粘贴到Visual Studio的解决方案资源管理器中存在原始表单的同一目录中。它现在显示与资源有关的错误。随着我向前迈进,它显示错误:在VS2010中创建表单的副本后恢复WinForm设计

error MSB3105: The item "obj\x86\Debug\BAS.frmGI1.resources" was specified more than once in the "Resources" parameter.

现在我只是失去了主窗体的设计。我如何恢复原始表单的设计?

+0

它打开Microsoft.VisualBasic.targets文件并在不同的行上显示错误。 – 2013-04-23 17:08:29

回答

4

既然你已经做出原始形式的副本,一切(类设计器代码等)被复制一模一样。与其他任何课程一样,如果您有两个类,其定义为确切同名;他们会冲突。同样,如果您有两个部分类文件,并且在这两个文件中您声明一个变量与相同的名称;它会冲突。


你所做的是引起了上面的设计发生冲突......也没有必要恐慌(或诉诸版本控制或诸如此类的东西 - 没有双关语意criticalfix's answer)。

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

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

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

  3. 打开FormName.Designer.vb(或FormName.Designer.cs为C#)用你喜欢的文本编辑器(但不(!)与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. 用在步骤#4中使用的相同值替换所有MySuperAwesomeForm的实例;例如:MySuperAwesomeFormTwo;

    • 保存并关闭这两个文件,如果它们仍然打开。

从技术上讲,你应该只需要在每个文件的前几行之一(更换MySuperAwesomeFormMySuperAwesomeFormTwo其中符合Public Classpartial class,或启动public partial class)。

最后,回到Visual Studio中,并将add the newly re-classed form重新回到该项目。

2

您可以制作一份表格的副本,但您必须更改其名称(包括文件名和对象名称),以免与原件混淆。然后,从Visual Studio中,您将添加表单...现有...,然后选择新表单。

您的错误消息提到了obj目录,所以错误可能发生在构建过程中。如果它是您复制的原始文件之外的内容,我会查看项目的资源以查看可能被复制的内容。

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