c# windows窗体:设计时支持选项卡控件
本文关键字:支持 选项 控件 windows 窗体 | 更新日期: 2023-09-27 18:03:54
我创建了自己的Tabcontrol类,派生自UserControl,因为我不喜欢现有Tabcontrol类的设计。它工作得很好,但现在我想添加设计时支持的控件,我不知道如何开始。我读过一些教程,但没有一个解释如何创建Tabcontrol。谢谢你的帮助;)
编辑:public class TabListDesigner : ParentControlDesigner
{
private DesignerVerb addVerb;
private DesignerVerb removeVerb;
private DesignerVerbCollection verbs;
protected TabList TabListControl { get { return this.Control as TabList; } }
public override DesignerVerbCollection Verbs
{
get
{
if (verbs == null)
{
verbs = new DesignerVerbCollection();
addVerb = new DesignerVerb("Add TabListPage", this.AddVerbHandler) { Description = "Add a new TabListPage to the parent control." };
removeVerb = new DesignerVerb("Remove TabListPage", this.RemoveVerbHandler) { Description = "Remove the currently selected TabListPage from the parent control." };
verbs.Add(addVerb);
verbs.Add(removeVerb);
}
return verbs;
}
}
private void AddVerbHandler(object sender, EventArgs e)
{
this.TabListControl.Add();
}
private void RemoveVerbHandler(object sender, EventArgs e)
{
//this.RemoveSelectedTabListPage();
}
public override void InitializeNewComponent(IDictionary defaultValues)
{
base.InitializeNewComponent(defaultValues);
this.TabListControl.Add();
this.TabListControl.Add();
}
}
所以这就是我所做的,但它不起作用。TabListControl.Add()方法可以工作(我在运行时测试了它,但我想要设计时支持)
我希望能够:-控件应该在设计时初始化为2个tabpage-在设计时添加/删除标签页-在设计时切换tab页-在设计时为不同的tabpage添加控件
理论上,当你在Visual Studio中渲染你的控件时,你不需要做太多的事情——你的自定义UserControl的实现将被执行,Visual Studio将在设计界面上绘制出控件,在那里你可以调整它的大小,排列它,等等。
要记住的一件事是this.DesignMode
属性。如果你的控件是在Visual Studio中呈现的,那么设计模式将是true,这样你就可以在需要的时候运行一些自定义代码(或者不运行一些代码——这就是为什么你可以经常看到WebService调用在WinForms项目中包裹在if (!this.DesignMode) { }
块中)。
给更多的建议,我需要更多的细节从你-你到底想做什么(你需要一些自定义的功能在设计器)和哪个版本的Visual Studio你正在使用。
编辑:好吧,我只是看了更多的问题-似乎你是在有趣的时候,如果你想与鼠标事件的工作,因为他们被困"设计"查看这个链接:http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/81606909-9310-48e8-8b46-5ecafb6e8007
所以,如果你在Load这样的事件中使用一些逻辑,你可以毫不费力地更新你的自定义控件,但对于更高级的东西(设计器内的交互),你需要深入挖掘。看看这篇文章的例子(链接自:删除WinForm控件的原始事件行为)