日期:2014-05-18  浏览次数:20895 次

有人做过复合组件吗?
大家都用过TabControl吧?

在2003里拖拽这个控件,在属性栏的下边两个连接:Add Tab,Remove Tab

我想问一下,我们自己开发的C#复合控件,可不可以实现这样的动作?谢谢

------解决方案--------------------
当然能
------解决方案--------------------
当然能,但是我也不知道如何实现
如果针对tabcontrol的话,你必须使用容器来实现,把你的容器都放在一个ArrayList就可以了
------解决方案--------------------
这个就是vs 2005的smarttag,lz可以这样:

先为你的控件写一个Designer,通过DesignerAttribute关联上;
然后override Designer的Verbs属性,大概应该这个样子:
public override DesignerVerbCollection Verbs
{
get
{
if (this.verbs == null)
{
this.removeVerb = new DesignerVerb("TabControlRemove", new EventHandler(this.OnRemove));
this.verbs = new DesignerVerbCollection();
this.verbs.Add(new DesignerVerb("TabControlAdd", new EventHandler(this.OnAdd)));
this.verbs.Add(this.removeVerb);
}
if (this.Control != null)
{
this.removeVerb.Enabled = this.Control.Controls.Count > 0;
}
return this.verbs;
}
}

private void OnAdd(object sender, EventArgs eevent)
{
//这里写上处理逻辑,参考MSDN,扩展Design-Time
}

private void OnRemove(object sender, EventArgs eevent)
{
//这里写上处理逻辑,参考MSDN,扩展Design-Time
}
然后重编译,重新打开Designer界面,就可以看到了。