I have never been able to successfully add a Form
from an existing file to a new project.
I read on a blog that you add just the *.cs file and the depen
After trying several methods the easiest way for me to use an existing WinForm was found to be: (similar to HaraldDuch’s answer) and tested only on VS2013:
1) Before moving your existing WinForm to the destination project’s source folder, create a dummy WinForm using the same name of your source WinForm.
2) Close your VS solution while saving.
3) Delete/Replace the newly created dummy set of WinForm files (*.cs, *.Designer.cs and *.resx) from Windows Explorer (off VS IDE) with the existing WinForm files you want to use.
4) Open VS to find your existing WinForm and you can rename it from VS IDE if you wish and you will need to change the namespace of the old WinForm to match your new project.
In my case, I have also noted that I can only ad one form at a time. You will get to see the forms as seperate items if you try to add multiple forms at the same time.
After doing a lot of testing and failing to correctly recognise the form when added, even though .designer and .resx were copying through when .vb was imported, I found Vidar's solution the best, least hacky fix.
It appears that if these references are not already in the project (if there are no forms yet), the form is not recognised as a form and is imported as a code module instead.
These can either be added manually per their solution above, or you can simply
This does not require editing any of the VS config files as shown in other answers to the question.
You can import an existing Form into a project. The files that need to be imported depend on the version of the Visual Studio used to create the form.
I will assume that you have two separate projects, Foo and Bar, in different solutions:
C:\
Projects\
Foo\
Foo.sln
Foo.vcproj
Program.cs
Foo.cs
Foo.Designer.cs
Foo.Designer.resx
and
C:\
Projects\
Bar\
Bar.sln
Bar.vcproj
Program.cs
Bar.cs
Bar.Designer.cs
Bar.Designer.resx
Now, say that you need to import fhe form Foo to the project Bar. First, you need to copy all files that accompany Foo into the Bar project folder:
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
Then, open Bar.sln in Visual Studio and right-click on the Bar project in Solution Explorer. Select [Add existing item] and select all files that you copied for the Foo form in the dialog opened. After confirming, you should see the newly imported form correctly in Solution Explorer.
Assume that you want to import a Form called YourFormName. Then you should only add YourFormName.cs to the project - the rest parts (YourFormName.designer.cs and YourFormName.resx) will be added automatically.
steps:
Create WinForms project (in my case .Net Framework is 4.5.1) in VS2013 Right-click on projects -> Add -> Existing Item... copy winform you want to import to the folder of your project. If you want to add it to a new folder then first create a folder then add. Search for any WinForm with controls (I added two forms created in VS2010 for .NET framework 4) in lesser than 10 sec visual studio added all the remaining files and i can open this in design mode.
I've just encountered similar issues when upgrading VisualBasic forms, going from VisualStudio 2010 to VisualStudio 2013. There appear to be two ways to add existing items.
Problem: If I choose Main Window->Project->Add Existing Item and pull in only the file formname.vb, the result appears to be interpreted as code only (no designer), points to the original file (rather than taking a copy to the new project) and has other issues.
Solution: If instead, I go to the Solution Explorer window, click to select the project (as opposed to the lower level objects in the tree) and then right click in the window, the resulting menu offers Add->Existing Item. Using this version works as expected, requiring only that I locate the formname.vb file. No manually copying files, no pointing to mulitple files, no editing scripts, etc. I'd guess the same applies for forms written in C.