Представление Visual Studio Design-форма пуста

У меня есть проект C# с две формы. Все хорошо компилируется. Когда я запускаю проект, все формы рисуются так, как они ожидаются.

пару дней назад, DesignView все формы начали показывать только пустую форму, такую как та, которую вы получаете в новом окне.Формы проекта.

Я прошел через несколько вопросов по SO с аналогичной проблемой, вот комментарии к этим вопросам:

  1. нет сторонних библиотек что мой проект использует (кроме htmlAgilityPack, который не вызывает эту проблему в других окнах.Формы проектов C#)
  2. Я проверил, что функция InitializeComponent только один раз в проекте для каждой формы
  3. когда я создаю новый проект и добавляю существующую форму (т. е. одну из моих проблемных форм проекта), Средство просмотра дизайна работает так, как ожидалось - поэтому я подозреваю, что .цезий. ,Дизайнер.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:

  1. резервное копирование файлов
  2. щелкните правой кнопкой мыши проект и выберите "выгрузить проект"
  3. щелкните правой кнопкой мыши выгруженный проект и выберите "Изменить [имя_проекта].csproj файл"
  4. внесите изменения и закройте файл.
  5. щелкните правой кнопкой мыши выгруженный проект и выберите "перезагрузить проект"

Я решил проблему, удалив все файлы, связанные с этой формой

  • файл - > щелкните правой кнопкой мыши - > исключить из проекта

и добавление файлов вручную обратно в проект

  • Проект - > Добавить - > Существующий Элемент...

еще одна возможность. У меня была группа форм, все они произошли от базовой формы. Я добавил код сохранения/восстановления местоположения-и все было пустым.

после часа возиться с ним и не в состоянии найти что-то не так, он внезапно начал бросать исключение нулевой ссылки в конструкторе, а не просто пустым. 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#, и смешанный случай также вызовет проблемы.)