【发布时间】:2010-03-21 03:50:20
【问题描述】:
我有一个 WinForm 项目,其中包含一个名为 MainUI 的表单。您可以看到自动生成的部分类显示为MainUI.cs 下的一个节点。有没有办法将我自己创建的部分类MainUI.Other.cs“移动”到MainUI.cs 下,使其显示为另一个节点?
【问题讨论】:
标签: visual-studio winforms partial-classes
我有一个 WinForm 项目,其中包含一个名为 MainUI 的表单。您可以看到自动生成的部分类显示为MainUI.cs 下的一个节点。有没有办法将我自己创建的部分类MainUI.Other.cs“移动”到MainUI.cs 下,使其显示为另一个节点?
【问题讨论】:
标签: visual-studio winforms partial-classes
在 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 文件显示为子节点的原因是您通常不需要或不想打开它,因为它包含您通常通过设计器查看或编辑的生成代码。而部分类文件将包含 您的 代码,您将希望对其进行编辑和查看;如果文件在解决方案资源管理器中不容易看到,则维护程序员可能会感到困惑。但是,只有您才能知道什么适合您的项目——请牢记!
【讨论】:
是的,这是可能的,但您必须手动编辑项目文件。
在项目文件中(使用 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”的文件夹,并将它们全部添加到同一位置。
【讨论】:
您可以修改项目源文件以对相关文件进行分组。 在项目源文件中,找到包含 MainUI.cs 的 ItemGroup 元素,并为 MainUI.Others.cs 添加一个条目
这里有一篇博文详细展示了如何做到这一点。 Group/nest source code files
【讨论】: