如何设计没有 TabControl 的 TabPage?

Posted

技术标签:

【中文标题】如何设计没有 TabControl 的 TabPage?【英文标题】:How to design a TabPage without TabControl? 【发布时间】:2021-01-20 08:44:06 【问题描述】:

我正在尝试设计一些“独立”标签页,稍后,我想将它们动态添加到我的主窗体中的标签控件中。 Visual Studio 不允许我在设计器中打开使用TabPage 扩展的类。有什么想法吗?

using System;
using System.Windows.Forms;

namespace Test.View.Panels 

    public class MainStatusTabPage : TabPage 

        public MainStatusTabPage() 
            
        

    

当我在解决方案资源管理器中右键单击该类并选择“查看设计器”时,我收到以下消息(设计器未显示):

要将组件添加到您的类中,请从工具箱中拖动它们并使用 属性窗口来设置它们的属性。创建方法和 您的班级的活动,切换到代码视图。

【问题讨论】:

您能否向我们展示有问题的代码以便能够复制此代码另外I am having Java background and there I was able to extend some class with e.g. JPanel which I then could open in the IDE designerTabPageVisual Studio 无关,它与这篇文章无关。跨度> But is there a way to design "stand-alone" tab-pages,没有。您可以做的是在该标签页上创建一个包含您需要的所有内容的用户控件,并创建它的一个新实例,然后将其添加到该标签页。将标签页视为一个容器(因为它就是这样),没有设计时支持,它只是包含其他控件。 标签页是一个容器,而不是标签的实际内容。在所有使用复杂内容的示例中,您会看到内容是自定义组件,例如用户控件,已添加到选项卡中 谢谢,这就是我需要的信息。所以我将不得不使用UserControl @salocinx 有更多原因。您真的不希望您的控件依赖于您使用的布局。如果您决定将选项卡控件更改为更高级的内容,则必须复制所有内容并重写代码。如果您从 TabPage 继承,则根本无法更改布局样式。 【参考方案1】:

当我在解决方案资源管理器中右键单击该类并选择“查看设计器”时,我收到以下消息(设计器未显示): 要将组件添加到您的类中,请将它们从工具箱中拖动并使用“属性”窗口来设置它们的属性。要为您的类创建方法和事件,请切换到代码视图

这是正常行为,因为 TabPage 只是一个包含其他控件的容器,仅此而已。正如@PanagiotisKanavos 提到的above:

标签页是一个容器,而不是标签的实际内容。在所有使用复杂内容的示例中,您都会看到内容是自定义组件,例如用户控件,已添加到选项卡中

考虑到这一点,您只需创建一个 UserControl 以及您需要的所有其他控件,然后将此新实例 (UserControl) 添加到 TabPage 本身。

【讨论】:

以上是关于如何设计没有 TabControl 的 TabPage?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET AJAX TabControl 中设置控件样式

如何在没有单击事件的情况下使特定的 TabItem 获得对 TabControl 的关注?

VS2005中menustrip控件如何实现tabcontrol功能?

如何在tabcontrol中使标签页无法访问

xaml / wpf TabControl如何使用屏幕的100%拉伸

如何从 TabControl 隐藏 TabPage [重复]