我创建了一个继承自另一个控件的System.Windows.Forms.Control
。另一个控件(System.Windows.Forms.DataGridView
,在这种情况下,但没关系)有一个smart tag,当控件在设计时被删除时会自动弹出:
随后可点击上面红色圆圈的小箭头。此外,控件在上下文菜单中有各种designer verbs。
我的问题是:如何禁用智能标签和设计器动词,以便我可以更好地控制我的控制?
答案 0 :(得分:3)
您继承的类还从DataGridView继承[Designer]
属性。哪个是DataGridViewDesigner类,它包含在设计时将任务列表及其动词添加到控件的代码。如果你想敲掉它,那么你必须替换设计师。
添加对System.Design的引用,并使您的代码看起来类似于:
using System;
using System.ComponentModel;
using System.Windows.Forms;
[Designer(typeof(System.Windows.Forms.Design.ControlDesigner))]
class MyGrid : DataGridView {
// etc..
}
哪个是控件的香草设计师。或者如果您不喜欢ControlDesigner,也可以使用System.ComponentModel.Design.ComponentDesigner,它根本没有任务列表。
答案 1 :(得分:1)
尝试用您自己的ControlDesigner替换:
[Designer(typeof(GridExDesigner))]
public class GridEx : DataGridView {
public class GridExDesigner : ParentControlDesigner {
private DesignerVerbCollection verbs = new DesignerVerbCollection();
public override void Initialize(IComponent component) {
base.Initialize(component);
}
public override DesignerVerbCollection Verbs {
get {
return base.Verbs;
}
}
}
}
确保引用System.Design和以下内容:
using System.ComponentModel.Design
using System.Windows.Forms.Design