WinForm部分类

时间:2010-03-21 03:50:21

标签: visual-studio winforms partial-classes

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

alt text http://i42.tinypic.com/dnkoyo.jpg

3 个答案:

答案 0 :(得分:12)

在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 :(得分:1)

是的,这是可能的,但您必须手动编辑项目文件。

在项目文件中(使用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”的文件夹,并将它们全部添加到同一位置。

答案 2 :(得分:0)

您可以修改项目源文件以对相关文件进行分组。 在项目源文件中,找到包含MainUI.cs的ItemGroup元素,并为MainUI.Others.cs添加一个条目

这是一篇博客文章,详细介绍了如何进行此操作。 Group/nest source code files