Копирование winforms между проектами в Visual Studio - PullRequest
32 голосов
/ 14 мая 2009

Каков наилучший способ копирования или вырезания / вставки формы из одного проекта в другой проект в рамках решения в Visual Studio?

Всякий раз, когда я пытаюсь это сделать, используя обозреватель решений (перетаскивание или щелчок правой кнопкой мыши, вырезая и вставляя), он копирует только базовый код C #, а не необходимые «кусочки», которые помогают визуализировать форму через конструктор форм. .

Ответы [ 15 ]

43 голосов
/ 28 сентября 2012
  1. Скопируйте три файла .cs, .designer, resx в папку целевого решения.
  2. В целевом проекте выберите Add existing item и сначала добавьте файл конструктора.
  3. Изменить атрибут пространства имен. Файл .cs также должен войти.
  4. Изменить пространство имен в файле .cs.
  5. Добавьте файл resx, используя Add existing item.
17 голосов
/ 05 июня 2014

Чтобы скопировать форму из одного проекта VS2013 в другой, самый простой способ (всего несколько щелчков мышью):

  1. В целевом проекте щелкните правой кнопкой мыши родительскую папку (скорее всего, ваш проект) и выберите в меню «Добавить; Существующий элемент».

  2. Затем выберите файл cs формы в исходном проекте. Например, выберите Form.cs (не Form.Designer.cs или Form.resx).

  3. Откройте Form.cs в целевом проекте и измените пространство имен (все экземпляры).

  4. Закройте и снова откройте Form.cs, и вы увидите все элементы управления и т. Д.

9 голосов
/ 14 мая 2009

Разобрался - знал, что это будет что-то глупое.

Видимо, целевой проект должен иметь ссылки:

  • System.Windows.Forms
  • System.Drawing

включается в ПЕРВЫЙ проект до того, как вы сделаете копию или вставку, иначе вы получите описанную мной проблему.

Спасибо всем, кто пытался помочь BTW.

7 голосов
/ 18 ноября 2013

Теперь в 2012 году стало намного проще. Просто зайдите в Файл> Добавить> Существующий проект> Перетащите форму в проект, в который вы хотите добавить ее.

5 голосов
/ 04 сентября 2014

Я попробовал следующий процесс в Visual Studio 2012, и он сработал.

  1. Добавьте проект, из которого вы хотите импортировать форму, в ваше решение, щелкнув правой кнопкой мыши решение> Добавить> Существующие меню проекта. Выберите проект и нажмите ОК.
  2. Теперь щелкните правой кнопкой мыши на форме, которую вы хотите скопировать, выберите Копировать.
  3. Щелкните правой кнопкой мыши проект, в который вы хотите скопировать, и выберите "Вставить".
  4. Форма будет скопирована в ваш проект, теперь переименуйте пространства имен.
  5. Удалите проект, добавленный на шаге 1, из своего решения.
4 голосов
/ 14 мая 2009

Используйте ReSharper (получите демонстрационную версию), щелкните правой кнопкой мыши класс в представлении кода, Refactor-> Move и переместите его в другой проект.

Дополнительным преимуществом является то, что если вы измените пространство имен, перемещая его между проектами, оно автоматически обновит все ссылки.

3 голосов
/ 14 мая 2009

Убедитесь, что вы копируете не только файлы Form.cs, но и файлы Form.designer.cs и Form.resx.

Но мне нужно спросить, почему вы хотите сохранить копию одной и той же формы в нескольких проектах в рамках одного решения. Звучит так, как будто вы хотите обобщить код в нем, поместить его в библиотеку классов и повторно использовать в тех местах, где он применим.

2 голосов
/ 21 декабря 2018

Если вы хотите создавать формы на одной машине, просто сделайте это.

В обозревателе решений Проект -> Добавить -> Добавить существующий элемент .

Выберите только исходный файл .cs (Sample.cs) из исходного каталога и обновите проводник текущего решения.

1 голос
/ 25 июля 2017

Для Visual Studio V.12 это единственный метод, который работал для меня (это сочетание вышеупомянутых записей):

  • Скопируйте через Проводник Файлов три файла, из которых состоит форма.
  • На верхней панели обозревателя решений в Visual Studio включите «показать все файлы».
  • Файл file.cs отображается серым цветом. Нажмите правую кнопку и выберите «Включить в проект». Обозреватель решений автоматически связывает три файла (.designer и .resx в файле .cs). Файл.cs изменить значок с c ++ на значок формы.
0 голосов
/ 15 июня 2019

Если вы используете VS 2015, то вы просто хотите добавить файл ".vb" и изменить пространство имен на новое имя проекта.

Пример: Если вы хотите добавить «Form1», созданную с использованием VS2008, в новый проект, созданный с использованием VS2015.

  1. Скопируйте все файлы ".vb", ".resx", файл ".disigner.vb" в новую папку проекта.
  2. Затем измените пространство имен файла ".disigner.vb", используя новое имя проекта.

Эти два шага сработали для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...