【问题标题】:WinForm partial classesWinForm 部分类
【发布时间】:2010-03-21 03:50:20
【问题描述】:

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

【问题讨论】:

    标签: visual-studio winforms partial-classes


    【解决方案1】:

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

    【讨论】:

    • 注意 - 如果您的“DependentUpon”文件位于子文件夹中,那么即使它在其他地方显示为 - 您仍然应该只使用 filename DependentUpon> 当你这样做时。
    【解决方案2】:

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

    在项目文件中(使用 XML 编辑器打开)找到文件列表项组。在我的示例中,我将表单保留为“Form1.cs”。按照以下示例将子元素 "&lt;DependentUpon&gt;" 添加到您的扩展类中:

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

    【讨论】:

      【解决方案3】:

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

      这里有一篇博文详细展示了如何做到这一点。 Group/nest source code files

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多