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

C#windows窗体:选项卡控件的设计时支持,c#,.net,winforms,C#,.net,Winforms,我创建了自己的Tabcontrol类,它是从UserControl派生的,因为我不喜欢现有Tabcontrol类的设计。它工作得很好,但现在我想向控件添加设计时支持,我不知道如何开始。我读过一些教程,但没有一本解释如何创建Tabcontrol。 谢谢你的帮助;) 编辑: 这就是我所做的,但它不起作用。TabListControl.Add()-方法有效(我在运行时对其进行了测试,但我需要designtime支持) 我希望能够: -控件应在设计时使用2个选项卡页进行初始化 -在设计时添加/删除选项卡

我创建了自己的Tabcontrol类,它是从UserControl派生的,因为我不喜欢现有Tabcontrol类的设计。它工作得很好,但现在我想向控件添加设计时支持,我不知道如何开始。我读过一些教程,但没有一本解释如何创建Tabcontrol。 谢谢你的帮助;)

编辑:

这就是我所做的,但它不起作用。TabListControl.Add()-方法有效(我在运行时对其进行了测试,但我需要designtime支持)

我希望能够: -控件应在设计时使用2个选项卡页进行初始化 -在设计时添加/删除选项卡页 -在设计时切换选项卡页
-在设计时将控件添加到不同的选项卡页

理论上,在Visual Studio中呈现控件时不需要做太多工作-将执行自定义用户控件的实现,Visual Studio将在设计图面上绘制控件,您可以在其中重新调整控件的大小、排列控件等

要记住的一件事是
这个.DesignMode
属性。如果控件在Visual Studio中呈现,则DesignMode将为true,以便在需要时可以运行一些自定义代码(或不运行某些代码-这就是为什么在WinForms项目中经常可以看到包装在
if(!this.DesignMode){}
块中的WebService调用的原因)

要提供更多建议,我需要您提供更多详细信息-您到底想做什么(是否需要designer中的一些自定义功能)以及您使用的是哪个版本的Visual Studio

编辑: 好的,我刚刚深入研究了这个问题-如果你想使用鼠标事件,似乎你正处在一个有趣的时期,因为它们是“被设计”捕获的。请查看以下链接:


因此,如果您在诸如Load之类的事件中使用某些逻辑,您可以轻松地更新自定义控件,但对于更高级的东西(设计器中的交互),您需要深入挖掘。请看(链接自:)

我不是c#用户,这可能是原因,但我似乎不清楚你的问题。你能详细说明一下你想做什么,到目前为止你做了什么,为什么没用吗?如果你不懂c,尤其是windows窗体,你就帮不了我。我认为没有必要发布选项卡控件的代码,因为问题不在于选项卡控件本身。好的。我使用VS2010。问题是,我必须在设计时跟踪鼠标在控件上的点击…(切换到apppendant选项卡)
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();
    }
}