C ++ / CLI, Winforms: новая форма в подпапке в VS2008 - PullRequest
2 голосов
/ 25 февраля 2010

Когда я создаю новую форму в подпапке в VS2008 в проекте Winforms C ++ / CLI, .h и .cpp правильно создаются в подпапке. Тем не менее, когда форма открывается в конструкторе и изменяется ее название, я получаю сообщение об ошибке, в котором говорится, что .resx (до этого момента AWOL) уже является частью проекта. Затем можно найти .resx в корневой папке решения. Как мне обойти это? (... без необходимости сообщать об ошибке MS, которая не будет относиться к этому слишком серьезно, так как это сезон VS2010)

Один из вариантов - создать форму в корневой папке проекта, а затем переместить все три файла (.cpp, .h и .resx) в нужную подпапку после внесения всех изменений. В этом случае я обнаружил, что «View Designer» больше не доступен после перемещения формы в подпапку.

Спаси меня. Пожалуйста. Я ничего не сделал, чтобы заслужить это.

Ответы [ 2 ]

2 голосов
/ 25 февраля 2010

Это соответствует обычному совету моего врача: если это больно, не делай этого.Среда C ++ IDE недостаточно умна, чтобы создать .resx в правильной папке.Это поправимо, хотя.Когда вы получите окно с сообщением об ошибке, переключитесь в Проводник и переместите только что созданный файл .resx из каталога проекта в подкаталог самостоятельно.Вернитесь назад и нажмите ОК, после этого все работает нормально.

0 голосов
/ 02 апреля 2012

Ответ Ганса правильный, но не решил полностью мою проблему.

Я хочу, чтобы мои исходные файлы (.cpp, .h, даже .resx) находились в подкаталоге ("SourceCode") и не смешивались со всем беспорядком в папке проекта. VS затрудняет перемещение Form (Form1) из каталога проекта - вы можете переместить файлы .h и .resx (в Windows Explorer) и добавить их (в Soln Explorer) как существующие элементы, но тогда VS не делает не признает их как форму. Я не смог найти способ сообщить VS, что файл form.h был частью элемента Form (есть ли способ?)

Я нашел обходной путь: щелкните правой кнопкой мыши Файлы заголовка (в обозревателе решений) -> Добавить-> Новый элемент-> Форма Windows. Перейдите в подкаталог исходного кода и назовите форму (myForm). Затем скопируйте исходный код из исходного файла form1.h и вставьте его поверх исходного в новом myForm.h. Сделайте то же самое для файла form1.cpp / myForm.cpp. Также выполните глобальный поиск и замените старое имя формы (Form1) на новое (myForm) во всех файлах проекта (если вы изменили имя формы). На этом этапе вы можете удалить исходные form1.h и form1.cpp в обозревателе решений (но не удаляйте файлы, пока не убедитесь, что с новыми версиями все в порядке).

Кажется, это работает, но сначала я не увидел файл myForm.resx в myForm.h в обозревателе решений. После перестановки элементов управления в новой форме (myForm) я получил сообщение «.resx уже является частью проекта». Окно сообщения просто не примет ОК для ответа. Я увидел файл myForm.resx в подпапке (?), Но заметил, что он был и в папке проекта. Я думаю, что я удалил один в папке проекта. Тогда в Soln Explorer было два файла myForm.resx (оба файла .resx имели одно и то же имя). Каким-то образом я определил, что первый соответствует папке проекта, и удалил ее. Теперь все работает нормально.

Кстати, я работаю с VS2010. Я ожидаю, что моя работа вокруг будет также относиться к VS2008. Я использовал аналогичный прием с VS2003, когда форма зависала (что часто происходило).

...