2010-02-11 113 views
7

我想创建一个新窗体,几乎是我的项目中已有的对话框的副本。如果我不需要,我不想浪费时间重新创建大部分表单。C#复制,粘贴在Visual Studio项目中的窗体

我复制并粘贴到我的项目中,并将其从Copy of Original .cs更名为NewItem.cs

当我转到重建我的解决方案,我得到一个错误

The item "obj\Debug\Control.Forms.NewUser.resources" was specified more 
than once in the "Resources" parameter. 
Duplicate items are not supported by the "Resources" parameter. 

我在做什么错?有没有办法解决这个问题?

+0

你解决了吗? – 2010-02-15 19:13:30

+0

还没有,我仍然有问题。 – Kevin 2010-02-16 14:06:19

回答

3

你可能有存储在一个名为Original.resx

当你复制它复制该文件,但没有将其重命名对话框文件的一些本地资源(这不应该发生,虽然)。查看解决方案资源管理器中的Copy.class文件下是否有.resx文件。如果是这样,也要重命名。

可能是值得进行清洁反正(对项目或解决方案右键单击)以清除OBJ和bin文件夹,然后尝试重新编译。

+0

复制Original.resx文件做重构它的名字,当我改名Original.cs到New.cs – Kevin 2010-02-12 15:22:55

+0

我有我的“GenerateMembers”属性设置为false了几个控件,这就是为什么它创建的RESX文件开始用。在resx文件里面,控件有一个'PublicKeyToken'属性,它在两个文件中都是相同的。我不知道这是否是问题。 – Kevin 2010-02-12 15:25:41

+1

设置GenerateMembers propery为false不应该驱动创建.RESX文件。 检查您的每个类是否在.cs和designer.cs中正确命名。我之前已经看到,当您制作表单的副本并进入代码以更改其类名称时,Visual Studio将重新计算所有代码并在原始form.cs文件中更改该类的名称(从而创建与新名称重复)。 – 2010-02-13 10:20:11

0

当创建原始形式的副本,VS不改变原来的命名空间(在你的情况下,它仍然是“原始”)。所以,只需将这个重复的名称空间(在“原始副本”中)更改为独特的东西。

2

老问题,但由于运声称接受的答案并没有解决这个问题,我会回答未来的Google。

问题是,NewItem.cs仍然包含具有相同的名称为Original.cs类。这种情况发生在文件名和类名不同时(不同于Java的Eclipse,Visual Studio允许在C#项目中使用)。复制粘贴会将“前缀副本”附加到文件名称中,并且重命名文件功能不够智能,无法弄清楚在这种情况下重命名类是适当的。

要修复错误,必须重命名重复项目项目中的类。我说物品而不是文件,因为在WinForms的情况下,这意味着两个文件:解决方案资源管理器默认显示的一个文件(右键点击 - >显示代码或F7,如果您被视觉设计师迎接)和.designer.cs。无需修改.resx AFAIK。