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

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

alt text

14
задан Glorfindel 4 July 2019 в 10:05
поделиться

3 ответа

Закройте решение в 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 отображается как подузел, заключается в том, что вам обычно не нужно или не нужно его открывать, поскольку он содержит сгенерированный код, который вы обычно просматриваете или редактируете с помощью дизайнера. В то время как файл частичного класса будет содержать ваш код, который вы захотите отредактировать и просмотреть; Если файл не виден в обозревателе решений, это может сбить с толку специалистов по обслуживанию. Однако только вы можете знать, что подходит для вашего проекта - просто помните!

12
ответ дан 1 December 2019 в 14:32
поделиться

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

Здесь сообщение в блоге, в котором подробно показано, как это сделать. Сгруппировать / вложить файлы исходного кода

0
ответ дан 1 December 2019 в 14:32
поделиться

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

В файле проекта (откройте его в редакторе XML) найдите группу элементов списка файлов. В моем примере я оставил форму как «Form1.cs». Добавьте дочерний элемент «» к вашему расширенному классу, как показано в примере ниже:

 <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>

Хотя обычно вы не хотите, чтобы какой-либо несгенерированный код был скрыт как дочерний узел. Моя обычная практика - создать в проекте папку под названием «Частичные классы» и добавить их все в одном месте.

1
ответ дан 1 December 2019 в 14:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: