表单包含主要设计,并包含该表单的代码文件中的所有代码。我刚刚复制了该表单并将其粘贴到Visual Studio的解决方案资源管理器中的相同目录中,其中存在原始表单。它现在显示与资源相关的错误。当我前进时,它显示错误:
错误MSB3105:“资源”参数中多次指定了项目“obj \ x86 \ Debug \ BAS.frmGI1.resources”。
现在我失去了主要形式的设计。我如何恢复原始表格的设计?
答案 0 :(得分:4)
由于您制作了原始表单的副本,因此所有内容(类,设计器代码等)的复制完全相同。与任何其他类一样,如果您使用完全相同的名称定义了两个类;他们会发生冲突。同样,如果您有两个部分类的文件,并且在两个文件中都声明了一个带有相同名称的变量;它会发生冲突。
你所做的是导致设计师发生上述冲突......并且不需要恐慌(或诉诸版本控制或其他 - 没有任何双关语意图criticalfix's answer)。
接下来,让我们修复这些类名!
只需右键单击副本,然后Exclude from Project;
浏览到您的project's directory;
使用您喜欢的文字编辑器打开 FormName.Designer.vb
(或 FormName.Designer.cs
进行C#)(但不是(!)with Visual Studio);
在此示例中找到您的表单类( MySuperAwesomeForm
):
Partial Class MySuperAwesomeForm
在C#中:
partial class MySuperAwesomeForm // FormName.Designer.cs
public partial class MySuperAwesomeForm : Form // FormName.cs
将 MySuperAwesomeForm
的所有实例替换为其他名称;示例: MySuperAwesomeFormTwo
;
现在使用您喜欢的文本编辑器打开 FormName.vb
(或 FormName.cs
进行C#)(再次确保它不(!)Visual Studio);
将 MySuperAwesomeForm
的所有实例替换为步骤4中使用的相同值;例如: MySuperAwesomeFormTwo
;
从技术上讲,您只需要在每个文件的前几行之一( MySuperAwesomeForm
替换 MySuperAwesomeFormTwo
以 Public Class
, partial class
或 public partial class
开头。
最后,返回Visual Studio,然后add the newly re-classed form返回项目。
答案 1 :(得分:2)
您可以复制表单,但必须更改其名称(文件名和对象名称),以免与原始名称混淆。然后,从Visual Studio中,您将添加表单...现有...然后选择新表单。
您的错误消息提到了obj目录,因此可能在构建期间发生了错误。我会查看项目的资源,看看哪些内容可能是重复的,如果它超出了您复制的原始文件。
如果您丢失了原始源代码,则可能无法恢复。我希望你使用某种形式的源代码控制(VSS,TFS等),或者至少是经常复制到备份的网络磁盘?