如何从Toolbox中隐藏控件库中的基类控件?
解决基类控件出现在工具箱的问题
要让基类HandySeparator不显示在Visual Studio工具箱中,最简单的方法是给它添加[ToolboxItem(false)]特性,这个特性会告诉设计时环境不要将该类作为可拖拽的控件纳入工具箱。
修改后的HandySeparator代码如下:
using System.ComponentModel; using System.Windows.Forms; [ToolboxItem(false)] public class HandySeparator : Control { private DashStyle dashStyle; public DashStyle DashStyle { get { return dashStyle; } set { dashStyle = value; Invalidate(); } } // 其他代码... }
另外,从设计角度来说,既然HandySeparator是作为基类供派生类继承、本身不需要被直接实例化的,你还可以把它定义为抽象类,这样不仅能避免它出现在工具箱,还能从语法层面限制开发者直接创建该类的实例,更符合基类的设计初衷:
using System.ComponentModel; using System.Windows.Forms; [ToolboxItem(false)] public abstract class HandySeparator : Control { private DashStyle dashStyle; public DashStyle DashStyle { get { return dashStyle; } set { dashStyle = value; Invalidate(); } } // 可定义抽象的OnPaint方法,强制派生类实现绘制逻辑 protected abstract override void OnPaint(PaintEventArgs e); // 其他代码... }
这样修改后,重新生成类库,工具箱里就只会显示HandyHSeparator控件了。
内容的提问来源于stack exchange,提问作者Ilya
相关产品推荐
相关产品推荐

