Как скопировать форму или компонент из одного проекта в другой
Когда начинаешь новый проект в C# часто может возникнуть необходимость перенести из предыдущих проектов какие-то свои наработки. Добавление формы или класса с нуля и потом поэтапное копирование текста программ с предыдущих проектов — не очень-то быстрый и удобный вариант. Но есть способ гораздо проще. Опишу его ниже на примере Visual Studio 2010, думаю в других версия делается аналогично.
Алгоритм действий для копирования формы из одного проекта в другой проект
1. Открываем текущий проект
2. В обозревателе решений на самом верхнем пункте (проекте) нажимаем правой кнопкой мышки и выбираем добавить существующий проект
3. В открывшемся окне выбираем проект из которого хотим скопировать форму или компонент. В результате чего получится что-то вроде этого:

4. Теперь обычным копированием и вставкой копируем, например, форму из одного проекта в другой.


5. Теперь ненужный проект (из которого копировали) можно удалить. При этом будет удален не сам проект и его файлы, а лишь ссылка на него.
Вот и всё. В результате этих нехитрых манипуляций Вы сможете легко скопировать свои наработки из одного прокта в другой.
Как скопировать форму или компонент из одного проекта в другой
Когда начинаешь новый проект в C# часто может возникнуть необходимость перенести из предыдущих проектов какие-то свои наработки. Добавление формы или класса с нуля и потом поэтапное копирование текста программ с предыдущих проектов — не очень-то быстрый и удобный вариант. Но есть способ гораздо проще. Опишу его ниже на примере Visual Studio 2010, думаю в других версия делается аналогично.
Алгоритм действий для копирования формы из одного проекта в другой проект
1. Открываем текущий проект
2. В обозревателе решений на самом верхнем пункте (проекте) нажимаем правой кнопкой мышки и выбираем добавить существующий проект

3. В открывшемся окне выбираем проект из которого хотим скопировать форму или компонент. В результате чего получится что-то вроде этого:

4. Теперь обычным копированием и вставкой копируем, например, форму из одного проекта в другой.


5. Теперь ненужный проект (из которого копировали) можно удалить. При этом будет удален не сам проект и его файлы, а лишь ссылка на него.
Вот и всё. В результате этих нехитрых манипуляций Вы сможете легко скопировать свои наработки из одного прокта в другой.
Копирование winforms между проектами в Visual Studio
Как лучше всего скопировать или вырезать / вставить форму из одного проекта в другой в рамках решения в Visual Studio?
Всякий раз, когда я пробую это, используя обозреватель решений (перетаскивание или щелчок правой кнопкой мыши, вырезание и вставка), он копирует только базовый код C #, а не необходимые «кусочки и фрагменты», которые помогают визуализировать форму с помощью конструктора форм.
Vidar 14 Май 2009 в 18:16
Какие «кусочки и кусочки» вам не хватает? Это копирование файлов Designer.cs и .resx или только файла YourForm.cs?
Adam Robinson
14 Май 2009 в 18:26
Вид дубликата — было бы лучше, если бы я поместил свое решение в вопрос «Gold», а затем удалил этот вопрос из SO .
14 Май 2009 в 18:42
22 ответа
Лучший ответ
- Скопируйте три файла, .cs , .designer , resx в папку целевого решения.
- В целевом проекте выберите Add existing item и сначала добавьте файл дизайнера.
- Измените атрибут пространства имен. Также должен появиться файл .cs .
- Измените пространство имен в файле .cs .
- Добавьте файл resx , используя Add existing item .
Marko 28 Сен 2012 в 04:26
Спасибо, сработало нормально. Сначала я добавил файл Form1.cs
22 Авг 2015 в 21:21
В VS2013 это еще проще: просто скопируйте файлы форм .cs, .designer и .resx в папку целевого решения. Используйте «Добавить существующий элемент», как указано выше, НО ДОБАВЬТЕ файл .cs. Вот и все! Все 3 файла внесены в пространство имен И автоматически изменяются!
Joe Gayetty
13 Янв 2016 в 16:41
Согласен — это работает и легко. Хотел бы, чтобы он отредактировал свой ответ — также хотел бы, чтобы это был лучший ответ / принят.
11 Дек 2016 в 02:05
Однако я упомяну — мое пространство имен все еще не обновлялось на .cs или .designer при первом добавлении .cs. Но достаточно близко.
11 Дек 2016 в 02:14
Это все еще работает в Visual Studio 2017. Просто констатирую очевидное: вам, конечно, придется обновить ссылки, свойства и т. Д.
user1074069
1 Май 2018 в 17:29
В 2012 году это стало намного проще. Просто перейдите в меню «Файл»> «Добавить»> «Существующий проект»> «Перетащите» форму в проект, в который вы хотите ее добавить.
Tom Wash 18 Ноя 2013 в 23:40
В Visual Studio 2015 щелкните проводник решений и щелкните правой кнопкой мыши Добавить-> Существующий элемент и выберите из другого проекта, какую форму вы хотите добавить, например Form.cs и автоматически будет добавлен Form.designer.cs, Form.resx
ranojan 7 Авг 2019 в 01:14
Спасибо за статью Гарри Дэвиса на https://quick-adviser.com. Была такая же проблема, но ни одно из решений здесь не помогло мне. Я также признаю, что не совсем понял, так как я только начал использовать VS неделю назад и хотел это для классного проекта. Это решение сработало для меня для VS 2021.
- Добавьте подпапку в проект. Я сделал это, щелкнув правой кнопкой мыши имя проекта в окне обозревателя решений и выбрав «Добавить» > «Новая папка».
- Щелкните правой кнопкой мыши новую подпапку и выберите Добавить > Существующий элемент.
- Найдите файл .cs, который вы хотите скопировать (не Design.cs и не что-то еще), и нажмите «Добавить».
- Щелкните правой кнопкой мыши только что добавленный файл .cs и выберите «Переименовать».
Holly M 15 Янв 2022 в 17:58
Я попробовал следующий процесс в Visual Studio 2012, и он сработал.
- Добавьте проект, из которого вы хотите импортировать форму, в свое решение, щелкнув правой кнопкой мыши решение> Добавить> Существующие меню проекта. Выберите проект и нажмите ОК.
- Теперь щелкните правой кнопкой мыши форму, которую вы хотите скопировать, выберите копию.
- Щелкните правой кнопкой мыши проект, который вы хотите скопировать, и выберите «Вставить».
- Форма будет скопирована в ваш проект, теперь переименуйте пространства имен.
- Удалите из решения проект, добавленный на шаге 1.
Ram 4 Сен 2014 в 07:36
Убедитесь, что вы копируете не только Form.cs, но также файлы Form.designer.cs и Form.resx.
Но мне нужно спросить, зачем вам хранить копию одной и той же формы в нескольких проектах в одном решении. Похоже, вы хотите обобщить код в нем, поместить его в библиотеку классов и повторно использовать в тех местах, где это применимо.
Fredrik Mörk 14 Май 2009 в 18:25
Нет, я только что разработал форму в неправильном проекте и теперь хочу переместить ее в правильный проект.
14 Май 2009 в 18:28
Я также добавил файлы designer.cs и resx — все равно ничего не меняет.
14 Май 2009 в 18:29
OK; Я просто хотел поднять флаг, потому что вы использовали слово «копировать» вместо «переместить»: o)
Fredrik Mörk
14 Май 2009 в 18:30
Я только что попробовал (в VS 2008). Если я перетащу файл Form.cs, удерживая клавишу , он переместит форму и связанные с ней файлы в другой проект и будет вести себя как форма в этом проекте.
Fredrik Mörk
14 Май 2009 в 18:32
Используйте ReSharper (получите демонстрацию), щелкните правой кнопкой мыши класс в представлении кода, выберите Refactor-> Move , и переместите его в другой проект.
Дополнительным преимуществом является то, что если вы измените пространство имен, перемещая его между проектами, оно автоматически обновит все ссылки.
Chris Doggett 14 Май 2009 в 18:33
На самом деле он имеет хорошую поддержку для копирования форм — в настоящее время используется ReSharper — и очень нравится.
14 Фев 2012 в 14:42
Если вы хотите формовать на одной машине, вы можете это сделать.
В обозревателе решений Проект -> Добавить -> Добавить существующий элемент .
Выберите только файл .cs (Sample.cs) из исходного каталога и обновите проводник текущего решения, он будет работать.
Anto sujesh 21 Дек 2018 в 16:16
Диалог открытия файла также позволяет добавить файл в виде ссылки. Рядом с кнопками ОК / Отмена есть раскрывающийся список.
4 Апр 2019 в 18:47
Я наконец понял следующее:
1) скопируйте 3 файла желаемой формы с расширениями .cs , .resx , .Designer.cs .
2) Добавить существующее и выберите formName.cs .
3) проверьте пространство имен и значение свойства Name добавленной формы.
4) В файле Program.cs используйте using NameSpace; и замените new NameSpace.formName() в строке Application.Run() .
stevieb 8 Дек 2019 в 18:45
Для Visual Studio V.12 это единственный метод, который у меня сработал (это смесь приведенных выше записей):
- Скопируйте через проводник файлов три файла, из которых состоит форма.
- На верхней панели обозревателя решений в Visual Studio включите «показывать все файлы».
- Файл file.cs отображается серым цветом. Щелкните правой кнопкой мыши и выберите: «Включить в проект». Обозреватель решений автоматически связывает три файла (.designer и .resx в файле .cs). Файл file.cs изменит значок с c ++ на значок формы.
Juan Jose Sanchez 25 Июл 2017 в 14:41
Я использую Visual Studio 2010, вот шаги, которые я выполнил:
- Скопируйте все 3 файла (.cs, .resx, .Designer.cs) в папку целевого проекта.
- В Visual Studio щелкните правой кнопкой мыши Проект ->Добавить ->Существующий элемент .
- Выберите все 3 файла (.cs, .resx, .Designer.cs), нажмите Добавить .
- Измените пространство имен на 2 файлах (.cs, .Designer.cs), если это другое пространство имен в целевом проекте.
- Запустите проект.
- Выполнено!
LifeiSHot 6 Дек 2017 в 12:05
Вы выбираете файл или используете дизайнер, чтобы «скопировать» все элементы управления? Выбор файла YourForm.cs в обозревателе решений и его копирование с помощью копирования и вставки или перетаскивания в другой проект должны выполнить то, что вам нужно.
Adam Robinson 14 Май 2009 в 18:18
Отредактировано выше в соответствии с вашим вопросом.
14 Май 2009 в 18:24
** Это работает для меня:
1) Скопируйте исходные файлы (.cs или vb, .designer, .resx) в целевую папку.
2) Показать скрытые файлы в целевом решении
3) Выберите эти файлы и включите их в проект.
Это чисто добавит winform или любые другие частично разделенные файлы.
Nexus23 23 Янв 2014 в 16:03
Использование VS2013 только что проверило это, и оно кажется надежным и последовательным. Это похоже на некоторые комментарии выше, но добавляет еще один более быстрый метод.
(1-й) . В проводнике Windows выделите и скопируйте все 3 файла формы (.vb или .cs, .designer, .resx).
(2-й) Это можно сделать двумя способами:
(2a-1) В проводнике вставьте 3 файла в папку проекта вместе с другими формами.
(2a-2) В обозревателе решений VS включите «Показать все файлы», щелкните правой кнопкой мыши вставленную форму и «Включить в проект». Он должен работать без других изменений.
Или, мне кажется, лучше:
(2b-1) В VS щелкните в обозревателе решений и вставьте w / Control-C. (По какой-то причине контекстное меню, вызываемое щелчком правой кнопкой мыши в обозревателе решений, может не отображать параметр вставки, но он работает с клавиатуры.) Этот метод добавляет форму в проект напрямую, без необходимости «Включить в проект», как указано выше. С помощью этого метода вы можете добавить столько форм за раз, сколько захотите (все 3 файла для каждой) за один шаг.
Настройка Visual Studio 2022 для проекта на C#, добавление ссылок в проект

Вопрос такой: установил себе VS 2022, создал проект на C#(на net core5). хочу добавить ссылку на пространство имен system.windows.forms, чтобы поиграть с формами. но в VS2022 это делается как-то по другому. в Solution Explorer нажимаю ПКМ по решению далее добавить(add) и не вижу возможности добавить ссылку. вот как это выглядит: пункта ссылки — нет. если выбиру другой проект (другой фреймворк) — все как ожидается: [![введите сюда описание изображения][2]][2] Возможно, конечно, дело в том, что в разных проектах я использую разные компоненты(что видно в центральной части), но честно говоря я ожидал, что есть возможность добавить ссылку на нужный мне FW в любом проекте. Подскажите, пожалуйста, что не так? [2]: https://i.stack.imgur.com/F7dDu.png
Отслеживать
задан 13 дек 2021 в 17:22
Noob_sai_Bot Noob_sai_Bot
1 1 1 бронзовый знак
Это не в студии дело, а в типе проекта, в .NET все это перенесено в раздел «Зависимости», который группирует в себе и ссылки, и пакеты NuGet, и все остальное. Касательно добавить system.windows.forms — в .NET тоже это по-другому все устроено, вы не должны добавлять это все вручную, а должны указать в .csproj , что это WinForms (
13 дек 2021 в 17:36
Спасибо за ответ, но вот я попробовал добавить зависимости руками(честно говоря тупо добавил указанную вами строчку в *.csproj), но не вышло. Можно чуть больше подробностей об этом? ссылка на документацию была бы лучшим вариантом, я полагаю 🙂 Я попробовал создать новый проек использую не .net core, а .net framework, все получилось без проблем, но очень хотелось бы суметь настроить вот такой проект так, как задумал.
13 дек 2021 в 19:48
Ну, документацию.. Можете посмотреть эту, тут показано как перенести с .NET Framework на .NET5 проект, это хорошо показывает отличия между этими двумя типами проектов. Внимание кстати на Project file , там то, что должно быть в .csproj файле. А так, почему вы не сделаете сразу WinForms проект на .net5?
13 дек 2021 в 20:09
Потому, что это самый простой путь, чтобы получить то, что мне сейчас нужно, уверен, если не смогу разобраться с таким не сложным вопросом, как подключение библиотек(при том уже установленных) и отступлю. то в будущем буду отступать и перед более значимыми трудностями. Уверен, что это не так сложно, немного настораживает, что настройка делается через XML, а не через мышко-кликательные действия(что было бы логично в самом конце 2021 года и в VS 2022), но то, что это надо все прописывать. требует дополнительного изучения. Спасибо за ссылки 🙂
13 дек 2021 в 20:41
Если вы это делаете лишь для того, чтоб «научиться», то не тем вы занимаетесь, ибо мало кто будет делать консольный проект и потом его переводить в WinForms, это как то. нелогично что ли, ибо есть уже готовый шаблон, который в пару кликов установит все за вас. Ну а настройки, есть, ПКМ по проекту — свойства, там будет такое, выбираете проект под Windows, галку возде WinForms, все, студия за вас сделает все, что я описывал выше.
