我從來沒有能夠成功地將新的Form
文件作爲現有文件添加到新項目中。我在博客上看到,您只添加了* .cs文件,並且依賴項進來了。嗯,我試過這個,並且文件沒有拖動並關聯* .designer和* .resx文件。但是,表單圖標不顯示。相反,該文件看起來像一個普通的* .cs文件圖像。而且,當我雙擊文件時,我會獲得代碼而不是表單對象。如何將現有表單添加到新項目中?
是否可以添加現有的表單而不重新創建它們?
我從來沒有能夠成功地將新的Form
文件作爲現有文件添加到新項目中。我在博客上看到,您只添加了* .cs文件,並且依賴項進來了。嗯,我試過這個,並且文件沒有拖動並關聯* .designer和* .resx文件。但是,表單圖標不顯示。相反,該文件看起來像一個普通的* .cs文件圖像。而且,當我雙擊文件時,我會獲得代碼而不是表單對象。如何將現有表單添加到新項目中?
是否可以添加現有的表單而不重新創建它們?
經過一些研究,我發現問題的根源。所有必須導入的文件都是*.cs
文件是正確的。警告在於項目類型。如果在類庫項目中工作,則必須執行另一個步驟。
System.Windows.Forms.dll
和System.Drawing
的引用。*.cs
文件注:
A.後,我執行了這些步驟,然後嘗試打開該文件中的文件只有正確識別。突然VS「醒來」並修復文件。
B.步驟順序無關緊要。如果您已經導入* .cs文件,只需修復引用。
C.如果缺少其他引用(E.G. DevExpress或其他第三方控制導入),* .cs文件將無法正確顯示,直到解決此問題。
我也必須在添加引用後關閉並重新打開我的解決方案。然後重新添加.cs文件 – Koenyn 2012-11-28 06:10:30
你實際上需要2個文件: - Form1.cs中 - Form1.Designer.cs
複製 - 粘貼它們到新的項目(只需確保不存在這樣的形式在新的項目相同nameexisting )
別忘了Form1.Designer.resx。缺失的圖標看起來不太好。 ;) – Skalli 2012-04-25 13:51:26
您可以將現有表單導入到項目中。需要導入的文件取決於用於創建表單的Visual Studio版本。
我會假設你有兩個單獨的項目,Foo和酒吧,在不同的解決方案:
C:\
Projects\
Foo\
Foo.sln
Foo.vcproj
Program.cs
Foo.cs
Foo.Designer.cs
Foo.Designer.resx
和
C:\
Projects\
Bar\
Bar.sln
Bar.vcproj
Program.cs
Bar.cs
Bar.Designer.cs
Bar.Designer.resx
現在,說你需要導入FHE形式富到項目欄。首先,你需要伴隨美孚的所有文件複製到該酒吧項目文件夾:
C:\
Projects\
Bar\
Bar.sln
Bar.vcproj
Program.cs
Bar.cs
Bar.Designer.cs
Bar.Designer.resx
Foo.cs
Foo.Designer.cs
Foo.Designer.resx
然後,打開Bar.sln在Visual Studio和Solution Explorer中的欄右擊項目。選擇[添加現有項目]並選擇在打開的對話框中爲Foo表單複製的所有文件。確認後,您應該在解決方案資源管理器中正確看到新導入的表單。
在我的情況下,也有三個文件,但命名有點不同。我在VS2010 Ultimate上,文件名是:'MyForm1.cs','MyForm1.Designer.cs','MyForm1.resx'。據我所見,任何地方都沒有'MyForm1.Designer.resx'。這是一個錯字嗎?你在什麼版本的VS上? – 2012-10-16 14:56:34
似乎他們在VS 2010中的.resx文件名中刪除了「.Designer」部分。無論如何,這應該仍然有效。 – npclaudiu 2012-10-16 19:19:47
爲什麼,當然是這樣。對於非常清晰的文件樹佈局,它也是+1。我只是好奇你爲**這些**文件名所用的版本。可能很高興知道以防萬一。我不是故意批評 - 如果聽起來那麼抱歉。 – 2012-10-17 04:14:00
轉到解決方案資源管理器,右鍵單擊它然後添加現有的項目,在這裏選擇現有的表單路徑。現在,這一點很重要,在您要使用現有表單的頁面上,您必須添加標題文件:
using "your existing project name";
作爲測試的一部分,我喜歡在自己的測試解決方案上創建用戶控件。一旦我滿意,我將用戶控制文件(* .cs,* .resx,* .designer.cs)複製到目標文件夾。然後我使用NtePad ++編輯更改命名空間的designer.cs文件。例如,假設我的testProject是Tester,我的目標項目是Boo。在designer.cs文件中,我將'namespace testProject'更改爲'namespace Boo'。 – 2013-10-31 14:51:56
對不起P.Brian。麥基,你的解決方案並不適合我。它確實通過讓VS認識到它是一種形式而不是代碼文件來改善它,即賦予它是圖標(想象它添加了表單)
但是唯一的辦法就是編輯csproj在文本編輯器中手動文件。我並不確信這是一個很好的解決方案,而且可能相當危險,尤其是考慮到我犯了兩次打字錯誤,並且徹底破壞了這個項目,但是一旦我找到了正確的方案,它就會發揮作用。也很難找到錯誤,比如沒有正確關閉標籤或忘記擴展文件。
因此該項目開始了與這些項目通過「添加 - >現有項」添加文件後:(附言:我敢肯定你沒有將文件先複製到項目文件夾,只需導航到在那裏它們被存儲在項目外和VS將它們複製到您右擊該文件夾中提前當然複製的工作原理也是如此)
<Compile Include="Reports\GBudget1Report.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Reports\GBudget1Report.Designer.cs" />
<Compile Include="Reports\GBudget2Report.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Reports\GBudget2Report.Designer.cs" />
<Compile Include="Reports\LASHForm.cs">
<SubType>Form</SubType>
</Compile>
,並在文件中進一步下跌:。
<EmbeddedResource Include="Reports\GBudget1Report.resx" />
<EmbeddedResource Include="Reports\GBudget2Report.resx" />
將這些與工作中的現有表格進行比較rectly(另一種選擇是,如果你沒有一個,就是建立在Visual Studio中的新形式,它會給你正確的加價複製),我發現DependentUpon標籤沒有子文件關聯到主窗體代碼文件。
所以我編輯它手工匹配:
<Compile Include="Reports\GBudget1Report.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Reports\GBudget1Report.Designer.cs">
<DependentUpon>GBudget1Report.cs</DependentUpon>
</Compile>
<Compile Include="Reports\GBudget2Report.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Reports\GBudget2Report.Designer.cs">
<DependentUpon>GBudget2Report.cs</DependentUpon>
</Compile>
再進一步下跌的文件:
<EmbeddedResource Include="Reports\GBudget1Report.resx">
<DependentUpon>GBudget1Report.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Reports\GBudget2Report.resx">
<DependentUpon>GBudget2Report.cs</DependentUpon>
</EmbeddedResource>
這不是我喜歡一個解決方案,但它的工作原理。如果有人有更好的解決方案,我很樂意傾聽。
如果你想創建窗口的形成是更好,如果你創建一個Windows窗體應用程序項目庫。然後刪除默認窗體(Form1),轉到項目屬性並將輸出類型(或項目類型)從Windows窗體應用程序更改爲類庫。
這樣的輸出將是一個DLL,但它會讓你需要一個Windows窗體項目的引用。正如您所指出的那樣,添加現有項目時不要添加其對應的.Designer和.resx文件,只需添加其頂級/主文件即可。
在我的情況,我也注意到,我可以在同一時間只有一個廣告形式。如果您嘗試同時添加多個表單,您將會看到表單爲單獨項目。
也許是因爲使用的Visual Studio 2012的,但所有這些解決方案沒有奏效。 Atollway給出了編輯csproj文件的提示。那暗示奏效了。
所有你必須是傳遞.cs文件。 (代碼文件)
假設您要導入名爲YourFormName的窗體。然後,您應該只添加YourFormName.cs到項目 - 其餘部分(YourFormName.designer.cs和YourFormName.resx)將自動添加。
步驟:
創建WinForms項目在VS2013 (在我的情況.NET框架是4.5.1)項目上右擊 - >添加 - >現有項... 副本的winform要導入到您項目的文件夾。如果您想將其添加到新文件夾,請先創建一個文件夾然後添加。 搜索任何帶有控件的WinForm(我添加了兩個在VS2010中爲.NET框架4創建的窗體) 小於10秒Visual Studio添加了所有剩餘的文件,我可以在設計模式下打開它。
所有這一切需要在Visual Studio 2012是以下內容:形式進入項目文件夾(的.cs,和了.Designer.cs的.resx)
您的答案不包含任何其他答案中至少沒有提供的信息。 – 2014-05-13 17:26:19
從升級到VisualStudio 2013的VisualBasic窗體升級VisualBasic窗體時,我剛遇到類似的問題。似乎有兩種添加現有項目的方法。
問題:如果我選擇主窗口 - >項目 - >添加現有項目,並只提取文件formname.vb,結果似乎被解釋爲代碼(沒有設計者),指向原始文件(寧比複製新項目)還有其他問題。
解決方案:如果改爲進入解決方案資源管理器窗口,請單擊以選擇項目(而不是樹中較低級別的對象),然後在窗口中單擊右鍵,出現的菜單提供Add-> Existing項目。使用此版本按預期工作,只需要我找到formname.vb文件。沒有手動複製文件,沒有指向多張文件,沒有編輯腳本,等我猜這同樣適用於C語言編寫的
形式仍然可以使用「添加現有項目」
「添加現有的iTem」,選擇三個文件(.cs .resx.Designer。CS)
使你的cs文件確認「命名空間應用」是一樣的項目
現在你可以使用自動完成你剛纔添加的形式。
嘗試多種方法對我來說,使用現有的WinForm的最簡單的方法後,發現是:(類似於HaraldDuch的答案),只有在VS2013測試:
1)現有的WinForm移動到前目標項目的源文件夾中,使用源WinForm的相同名稱創建一個虛擬WinForm。
2)保存時關閉VS解決方案。
3)從Windows資源管理器(關閉VS IDE)中刪除/替換新創建的WinForm文件(* .cs,* .Designer.cs和* .resx)假集合與您要使用的現有WinForm文件。
4)打開VS找到你現有的WinForm,你可以從VS IDE重新命名它,如果你願意,你需要改變舊的WinForm的命名空間以匹配你的新項目。
這在VS2015中適用於我。必須在Designer中進行一些編輯才能更改項目名稱。 – Tim 2017-04-20 17:55:56
我知道這是一個老問題,但我想給出我的答案,不涉及關閉項目並重新打開它。
這項工作完美 – 2017-08-23 22:46:52
輝煌。這是最簡單的方法。 – 2018-03-05 20:21:04
這對我來說剛剛工作(我和你有同樣的問題)。 1.創建具有相同名稱的新winform,添加一些東西(所以resx文件被創建),保存並關閉。 2.用原始表單替換新創建的文件。 3.完成
拖放從文件系統下降的.cs文件在解決方案資源管理項目樹(例如):
如果它不是Windows Forms項目,請不要忘記引用。
儘管這是一箇舊帖子,但我的確遇到了與上面描述的@MatthewRadford相同的問題。我的解決方法是隻添加.CS文件(不要添加.resx文件),並允許Visual Studio在添加.cs文件後自動生成.resx文件。我發現永久性解決方案。如果升級到新版Visual Studio後立即出現此問題,升級過程中可能無法正確註冊Active Reports。解決方案是停用Active Reports(使用GrapeCity License Manager),卸載活動報告,從頭開始重新安裝活動報告,然後重新激活許可證。您現在應該可以同時添加ReportName.cs和ReportName.resx以及Designer.cs文件,同時讓Visual Studio正確處理它們的依賴關係。
只需添加表單文件(form.vb或form.cs)即可自動創建其他文件。
經過大量測試,添加後未能正確識別窗體,即使.designer和.resx在導入.vb時複製,我發現Vidar's solution是最好的,最不起作用的修復程序。
看來如果這些引用還沒有在項目中(如果還沒有表單),表單不會被識別爲表單,而是作爲代碼模塊導入。
這些可以手動上面添加每他們的解決方案,也可以簡單地
這不需要編輯任何VS的配置文件,如圖所示在其他的答案的題。
看看實際的'csproj'文件本身。它是XML,可以手動編輯 - 查看現有表單的結構,並複製新表單的結構。 – Oded 2012-04-25 13:30:37
這對我來說一直有效,從來沒有任何問題,您是否可能試圖添加一個表單到控制檯項目?看起來很奇怪,它不起作用。 – Jason 2012-04-25 13:32:29
我可以說,在VS2012中,唯一能解決問題的方法就是編輯'.csproj'文件並手動創建依賴關係(不是太難)。否則,「.Designer.cs」和「.resx」文件在解決方案資源管理器中從不出現在表單正下方。 @MatthewRadford的解決方案是唯一爲我工作的人。 – atconway 2013-07-01 22:12:56