2010-02-11 115 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。