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

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

14 голосов
/ 21 марта 2010

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

Ответы [ 3 ]

12 голосов
/ 21 марта 2010

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

1 голос
/ 21 марта 2010

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

В файле проекта (откройте его с помощью редактора 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>

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

0 голосов
/ 21 марта 2010

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

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

...