代码之家  ›  专栏  ›  技术社区  ›  el2iot2

从Visual Studio 2008的WinForms工具箱中筛选自定义.net控件的选项是什么?

  •  1
  • el2iot2  · 技术社区  · 17 年前

    Visual Studio 2008在检测项目中的控件并将其添加到工具箱以供表单设计器使用方面做得更好。如果您有一个具有UserControl或DataSet派生类型的程序集,那么它将自动检测该控件并将其添加到用于设计表单的工具箱中。这是 稍微 比2005年的旧系统要好,旧系统让你手动添加控件,偶尔会忘记它们,等等。

    然而,在我正在进行的遗留单片项目上(现在升级到vs2008),这意味着我不想要也不需要许多控件(而且对于这么多遗留代码,重新设计是不必要的:()。我想,如果我将某些类型设置为内部或私有,那么它们就不会出现。然而,我需要其中许多保持公开,但不要出现在工具箱中。此外,由于工具箱中添加了如此多的控件,打开winforms设计器的速度明显减慢。

    1. 是否有一个属性或其他机制可以防止工具箱出现(否则不会影响功能)?
    2. 使用这种机制进行过滤是否会提高性能,同时仍然自动检测应该在工具箱中的新类型?(我知道你可以禁用自动检测,但在许多情况下很好)
    3. 其他人在大型解决方案(包含许多csproj/vbproj文件)上是否遇到过这种刺激?

    编辑:谢谢大家!我知道这必须很简单(很可能是一个属性),但这填补了空白。很高兴知道我在不知道ToolBoxItem(错误)的情况下有很多朋友。

    2 回复  |  直到 17 年前
        1
  •  2
  •   Robert Wagner    17 年前

    以下属性应将其从工具箱中隐藏:

    [ToolboxItem(false)]
    

    如果将其应用于所有不想显示的类型,它仍将显示您创建的没有此属性的任何新类型。注意,您可能必须手动删除这些项目才能开始。

    blog post 显示了您可能想要使用的其他一些属性。

        2
  •  1
  •   Lusid    17 年前

    浏览工具箱,对于您看到的每个要隐藏的自定义控件,在类上方添加以下属性:

    [工具箱项(false)]

    当然,这是一个已编译的属性,会影响使用代码的每个人,所以我只建议对没有拖放意义的控件这样做。否则,你可能会让一个喜欢这种控制的人非常非常生气。 :)