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添加控件

c# windows窗体:设计时支持选项卡控件

理论上,当你在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控件的原始事件行为)