winforms WinForm部分类别

dzhpxtsq  于 2022-11-17  发布在  其他
关注(0)|答案(4)|浏览(171)

我有一个WinForm项目,其中包含一个名为MainUI的窗体。您可以看到自动生成的分部类显示为MainUI.cs下的一个节点。有没有办法将我自己创建的分部类MainUI.Other.cs“移动”到MainUI.cs下,使其显示为另一个节点?

wnrlj8wa

wnrlj8wa1#

在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文件显示为子节点的原因是,您通常不需要或不想打开它,因为它包含您通常会通过设计器查看或编辑的生成代码。而分部类文件将包含您希望编辑和查看的代码;如果文件在解决方案资源管理器中不容易看到,维护程序员可能会感到困惑。但是,只有您才知道什么适合您的项目--只是需要记住的一些东西!

smdnsysy

smdnsysy2#

是的,这是可能的,但您必须手动编辑项目文件。
在项目文件中(用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>

通常情况下,您不会希望任何非生成的代码作为子节点隐藏起来。我的常规做法是在项目中创建一个名为“Partial Classes”的文件夹,并将它们添加到同一个位置。

wgmfuz8q

wgmfuz8q3#

您可以修改项目源文件以将相关文件分组。在项目源文件中,找到包含MainUI.cs的ItemGroup元素,并为MainUI.Others.cs添加一个条目
这里有一篇博客文章详细介绍了如何做到这一点。Group/nest source code files

5cnsuln7

5cnsuln74#

再补充一下@itowlson的回答:如果在编译时出现诸如“Duplicate 'Compile' items were included.”之类的错误,那可能是因为您要包含的文件已经使用通配符包含了。
解决方案是删除它们,然后将它们添加到编译配置中,如下所示:

</Project>
  <ItemGroup>
    <Compile Remove="MainUI.Other1.cs" />
    <Compile Remove="MainUI.Other2.cs" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="MainUI.Other1.cs">
      <DependentUpon>MainUI.cs</DependentUpon>
    </Compile>
    <Compile Include="MainUI.Other2.cs">
      <DependentUpon>MainUI.cs</DependentUpon>
    </Compile>
  </ItemGroup>
</Project>

相关问题