Представление Visual Studio Design-форма пуста
У меня есть проект C# с две формы. Все хорошо компилируется. Когда я запускаю проект, все формы рисуются так, как они ожидаются.
пару дней назад, DesignView все формы начали показывать только пустую форму, такую как та, которую вы получаете в новом окне.Формы проекта.
Я прошел через несколько вопросов по SO с аналогичной проблемой, вот комментарии к этим вопросам:
- нет сторонних библиотек что мой проект использует (кроме htmlAgilityPack, который не вызывает эту проблему в других окнах.Формы проектов C#)
- Я проверил, что функция InitializeComponent только один раз в проекте для каждой формы
- когда я создаю новый проект и добавляю существующую форму (т. е. одну из моих проблемных форм проекта), Средство просмотра дизайна работает так, как ожидалось - поэтому я подозреваю, что .цезий. ,Дизайнер.cs и .файлы resx моих форм в порядке.
Is там что-то я мог испортить в настройках проекта или где-то еще?
редактировать
третий пункт выше вводит в заблуждение - я попытался создать новый проект для второй формы, а также и там проблема не устраняется. Минимальный объем исходного кода, который показывает проблему, должен быть найден здесь.
4 ответов
ваш файл проекта стал недействительным.
допустимая запись проекта для формы выглядит следующим образом:
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
Ваш, хотя отсутствует строка DependentUpon-именно поэтому файлы кода и конструктора появляются отдельно в проекте, а не подключаются:
<Compile Include="mainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="mainForm.Designer.cs" />
если вы добавите недостающую строку, форма отобразится правильно в режиме конструктора:
<Compile Include="mainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="mainForm.Designer.cs">
<DependentUpon>mainForm.cs</DependentUpon>
</Compile>
и привести в порядок файл ресурсов:
<EmbeddedResource Include="mainForm.resx">
<DependentUpon>mainform.cs</DependentUpon>
</EmbeddedResource>
для того, чтобы исправьте это, вы можете просто отредактировать csproj в редакторе или сделать это в Visual Studio:
- резервное копирование файлов
- щелкните правой кнопкой мыши проект и выберите "выгрузить проект"
- щелкните правой кнопкой мыши выгруженный проект и выберите "Изменить [имя_проекта].csproj файл"
- внесите изменения и закройте файл.
- щелкните правой кнопкой мыши выгруженный проект и выберите "перезагрузить проект"
Я решил проблему, удалив все файлы, связанные с этой формой
- файл - > щелкните правой кнопкой мыши - > исключить из проекта
и добавление файлов вручную обратно в проект
- Проект - > Добавить - > Существующий Элемент...
еще одна возможность. У меня была группа форм, все они произошли от базовой формы. Я добавил код сохранения/восстановления местоположения-и все было пустым.
после часа возиться с ним и не в состоянии найти что-то не так, он внезапно начал бросать исключение нулевой ссылки в конструкторе, а не просто пустым. Duh--код сохранения / восстановления использовал объект, который не существовал во время разработки.
Почему он молчал об этом, а затем внезапно начал я понятия не имею.
для тех, кто ищет вокруг и не найдя утешения, у меня есть другое решение. Проект, который я унаследовал, имеет ужасное качество кода, и у предыдущего разработчика был смешанный случай по всему его коду, потому что "это нечувствительно к регистру, поэтому это не имеет значения"
пока PopulateRevs
фактически идентичен POpulateREvs
в Visual Basic такая лень приводит к проблемам. А именно:
<Compile Include="Inventory\Partmaster.Designer.Vb">
<DependentUpon>Partmaster.vb</DependentUpon>
</Compile>
<Compile Include="Inventory\Partmaster.vb">
<SubType>Form</SubType>
</Compile>
я случайно увидел это в .vbproj
файл при просмотре других решений, которые не получилось. Мне случилось измениться Partmaster.Designer.Vb
до Partmaster.Designer.vb
(расширение в нижнем регистре) и он работал.
таким образом, как другое решение, в то время как Visual Basic не чувствителен к регистру, он выглядит как - это. Если вы в тупике, еще одна вещь, чтобы убедиться, что ваши имена файлов и .proj
файлы разделяют тот же случай.
(Я понимаю, что это тегами C#
, но я тестировал это на C#, и смешанный случай также вызовет проблемы.)