阻止Visual Studio将自定义分部类作为设计器加载

时间:2016-10-28 00:43:30

标签: c# .net winforms visual-studio windows-forms-designer

在Visual Studio中,有很多设计器编辑器,Windows窗体,XAML,安装程序等。

有时,我会创建一个新的源代码 partial class(custom)来分隔逻辑。

例如:

  • 仅限部分代码:类Form1:Windows.Forms.Form→Form1.cs
  • 仅限部分设计器:部分类Form1:Form→Form1.Designer.cs
  • 部分类(自定义):部分类form1:表单→Form.Print.cs

在这最后,我包括仅打印方法和属性,然后,当我在解决方案资源管理器上双击此文件时,总是打开设计器,而不是代码编辑器,当然,我尝试使用 F7 或右键单击以执行此操作,但当我与同事共享项目时,它就成了一个问题。

任何人都知道如何避免这种行为?也许是一个类属性!?

3 个答案:

答案 0 :(得分:1)

作为选项,在文件开头添加由[DesignerCategory("")]修饰的虚拟类。这会将DesignerCategory的行为限制为设计者尝试加载的第一个类。

不优雅但正在工作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApplication1
{
    [System.ComponentModel.DesignerCategory("")]
    public class Dummy { }

    public partial class Form1
    {
    }
}

答案 1 :(得分:0)

另一种方法是嵌套文件并为其添加 next/link 扩展名:

enter image description here

这样做:

  1. 卸载项目

  2. 编辑项目文件

  3. 找到您想要将其设为子文件的文件名

  4. .designer.cs 文件添加到子标签

    你现在应该有这样的东西:

    <DependentUpon>name of parent</DependentUpon>
  5. 保存并关闭项目文件。

  6. 重新加载项目。

答案 2 :(得分:0)

提供了 C# 和 VB.Net 代码,因为这仍然是一个问题。

基于接受的答案,https://stackoverflow.com/a/40302216/3917091

在自己的文件(或任何地方)中实现你的类

C#:

/// <summary>
/// Partial classes of Forms want to open in Form-View. Adding this stops it.
/// </summary>
[System.ComponentModel.DesignerCategory("")]
public class FormViewBlocker {
}

VB.net:

''' <summary>
''' Partial classes of Forms want to open in Form-View. Adding this stops it.
''' </summary>
<System.ComponentModel.DesignerCategory("")>
Public Class FormViewBlocker

End Class

然后,在部分表单的顶部,

C#:

partial class FormViewBlocker {
}

VB.net:

Partial Class FormViewBlocker

End Class

原来如此