Частичные классы WinForm

У меня есть проект WinForm, который содержит форму под названием MainUI. Вы можете видеть, что автоматически сгенерированный частичный класс отображается как узел в MainUI.cs. Есть ли способ "переместить" созданный мной частичный класс MainUI.Other.cs в MainUI.cs чтобы он отображался как другой узел?

alt text

Ответы

Ответ 1

Закройте решение в Visual Studio и откройте файл .csproj в текстовом редакторе. Найдите MainUI.Other.cs и добавьте следующий элемент XML:

<Compile Include="MainUI.Other.cs">
  <SubType>Form</SubType>
  <DependentUpon>MainUI.cs</DependentUpon>  <!-- this is the magic incantation -->
</Compile>

Заново откройте решение в Visual Studio и наслаждайтесь субнодельным достоянием.

Тем не менее, вы можете пересмотреть, является ли это хорошей идеей. Причина того, что файл .designer.cs отображается как поднод, объясняется тем, что вам обычно не нужно или не нужно его открывать, поскольку он содержит сгенерированный код, который вы обычно просматриваете или редактируете через конструктор. Если частичный файл класса будет содержать ваш код, который вы хотите редактировать и просматривать; это может ввести в заблуждение программистов обслуживания, если файл не так легко увидеть в обозревателе решений. Однако только вы можете знать, какое право для вашего проекта - просто что-то, что нужно помнить!

Ответ 2

Да, это возможно, но вам придется вручную отредактировать файл проекта.

В файле проекта (откройте его с помощью XML-редактора) найдите группу элементов списка файлов. В моем примере я оставил форму "Form1.cs". Добавьте дочерний элемент "<DependentUpon>" в расширенный класс в соответствии с приведенным ниже примером:

 <Compile Include="Form1.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="Form1.Designer.cs">
      <DependentUpon>Form1.cs</DependentUpon>
    </Compile>
    <Compile Include="Form1.Designer.Other.cs">
      <DependentUpon>Form1.cs</DependentUpon>
      <SubType>Form</SubType>
    </Compile>

Как правило, хотя вы не хотите, чтобы какой-либо не сгенерированный код был скрыт как дочерний node. Моя нормальная практика заключается в создании папки в проекте под названием "Частичные классы" и добавлении их всех в одно и то же место.

Ответ 3

Вы можете изменить исходный файл проекта для группировки связанных файлов. В исходном файле проекта найдите элемент ItemGroup, который содержит MainUI.cs и добавьте запись для MainUI.Others.cs

Вот сообщение в блоге, показывающее, как это сделать в деталях. Файлы исходных кодов групп/гнезд