【问题标题】:C# windows forms: design-time support for tab-controlC# windows 窗体:选项卡控件的设计时支持
【发布时间】:2013-03-14 07:37:23
【问题描述】:

我创建了自己的 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 个 TabPages 进行初始化 - 在设计时添加/删除 TabPages - 在设计时切换 TabPages - 在设计时将控件添加到不同的 TabPages

【问题讨论】:

  • 我不是 c# 用户,所以这可能是原因,但你的问题对我来说似乎不清楚。您能否详细说明您正在尝试做什么,到目前为止您已经尝试过什么以及为什么它没有奏效?
  • 好吧,如果你不懂 c#,尤其是 windows 窗体,你将无法帮助我。我认为没有必要发布选项卡控件的代码,因为问题不在于选项卡控件本身。

标签: c# .net winforms


【解决方案1】:

理论上,在 Visual Studio 中呈现控件时,您不需要做太多事情 - 自定义 UserControl 的实现将被执行,Visual Studio 将在设计图面上绘制控件,您可以在其中重新调整大小,安排之类的。

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

为了提供更多建议,我需要您提供更多详细信息 - 您究竟想做什么(您需要设计器中的一些自定义功能)以及您使用的 Visual Studio 版本。

编辑: 好的,我刚刚更深入地研究了这个问题 - 如果你想使用鼠标事件,你似乎正处于有趣的时期,因为它们被“设计”困住了查看这个链接:http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/81606909-9310-48e8-8b46-5ecafb6e8007

因此,如果您在诸如 Load 之类的事件中使用某些逻辑,则更新自定义控件不会有任何问题 - 但对于更高级的东西(设计器内的交互),您需要更深入地挖掘。看this article for example(链接自:Remove original event behaviour of WinForm Control

【讨论】:

  • 好的。我使用 VS 2010。问题是,我必须在设计时跟踪控件上的鼠标点击...(切换到附加选项卡)
猜你喜欢
  • 1970-01-01
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
  • 2011-08-27
相关资源
最近更新 更多