如何为 UserControl 中的 TabControl 提供设计器支持,以便我可以将控件拖/放到选项卡页上?

2024-02-02

我有一个用户控件,其中包含一个Panel 和一个TabControl。我为两者启用了设计时支持。我可以将工具箱中的控件拖/放到用户控件中的面板控件上。我还可以通过 TabControl 上的设计器添加和删除选项卡页。但是,我无法将任何控件拖/放到选项卡页本身上。

下面是我的用户控件的代码生成源代码:

partial class TestUserControl
{
    private System.ComponentModel.IContainer components = null;

    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }

    #region Component Designer generated code

    private void InitializeComponent()
    {
        this.tabControl = new System.Windows.Forms.TabControl();
        this.contentPanel = new System.Windows.Forms.Panel();
        this.SuspendLayout();
        // 
        // tabControl
        // 
        this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;
        this.tabControl.Location = new System.Drawing.Point(0, 0);
        this.tabControl.Name = "tabControl";
        this.tabControl.SelectedIndex = 0;
        this.tabControl.Size = new System.Drawing.Size(306, 118);
        this.tabControl.TabIndex = 0;
        // 
        // contentPanel
        // 
        this.contentPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
        this.contentPanel.Location = new System.Drawing.Point(0, 118);
        this.contentPanel.Name = "contentPanel";
        this.contentPanel.Size = new System.Drawing.Size(306, 73);
        this.contentPanel.TabIndex = 0;
        // 
        // TestUserControl
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.Controls.Add(this.tabControl);
        this.Controls.Add(this.contentPanel);
        this.Name = "TestUserControl";
        this.Size = new System.Drawing.Size(306, 191);
        this.ResumeLayout(false);

    }

    #endregion

    private System.Windows.Forms.TabControl tabControl;
    private System.Windows.Forms.Panel contentPanel;
}

以下是我添加的用于启用设计时支持的源代码:

[Designer(typeof(TestUserControlDesigner))]
public partial class TestUserControl : UserControl
{
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public TabControl TabControl 
    {
        get { return this.tabControl; }
    }

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public Panel ContentPanel
    {
        get { return this.contentPanel; }
    }

    public TestUserControl()
    {
        InitializeComponent();
    }
}

internal class TestUserControlDesigner : ParentControlDesigner
{
    public override void Initialize(System.ComponentModel.IComponent component)
    {
        base.Initialize(component);

        EnableDesignMode(
            (this.Control as TestUserControl).TabControl, "TabControl");
        EnableDesignMode(
            (this.Control as TestUserControl).ContentPanel, "ContentPanel");
    }
}

我需要做什么才能将控件拖/放到 TabControl 的选项卡页上?


您还必须在现有选项卡页面上启用设计模式:

internal class TestUserControlDesigner : ParentControlDesigner {
    public override void Initialize(System.ComponentModel.IComponent component) {
        base.Initialize(component);
        var ctl = (this.Control as TestUserControl).TabControl as TabControl;
        EnableDesignMode(ctl, "TabControl");
        foreach (TabPage page in ctl.TabPages) EnableDesignMode(page, page.Name);
        EnableDesignMode((this.Control as TestUserControl).ContentPanel, "ContentPanel");
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为 UserControl 中的 TabControl 提供设计器支持,以便我可以将控件拖/放到选项卡页上? 的相关文章

  • 工具提示出现在表单/窗口后面! (C#/VS 2008)

    由于某些奇怪的原因 我在 VS 2008 C winforms 应用程序中的工具提示显示在表单后面 这非常令人沮丧 我不知道我应该做什么 有人遇到过这个吗 有想法吗 PS 我正在表单中以编程方式执行 toolstip show 您可能需要检
  • WPF 用户控件引发设计时异常

    我有一个启动计时器的用户控件 看起来 XAML 设计器正在尝试调用该代码 该代码链接到一些后端数据库内容 我在设计屏幕中不断收到未经处理的异常错误 有什么想法可以阻止设计师尝试运行代码吗 当加载到设计器中时 XAML 设计器将调用 User
  • 拆分容器,制作固定面板

    我有一个水平方向的 splitcontainer 我希望仅在表单调整大小期间为 panel2 设置固定高度 并让 splitter 调整 panel2 大小 现在我正在这样做 但我不满意 因为用户注意到面板调整了大小 Private Sub
  • 检测用户是否正在滚动 dataGridView 滚动条

    我正在更新一个dataGridView与一个新的数据表使用 dataGridView1 DataSource table 但是 我不想在用户滚动 dataGridView 时执行此操作 如何检查滚动条是否正在滚动或已完成滚动 即拖动而不是单
  • SaveFileDialog 在 Windows XP 上静默崩溃 WinForms 应用程序

    我正在使用 C NET 4 0 和 DevExpress 组件开发 WinForms 应用程序 在 Windows 7 上一切正常 在 Windows XP SP3 上 SaveFileDialog 显示并关闭几秒钟后 应用程序将默默退出
  • winforms 的 MVVM [重复]

    这个问题在这里已经有答案了 可能的重复 Windows 窗体的 UI 设计模式 如 WPF 的 MVVM https stackoverflow com questions 595469 ui design pattern for wind
  • 具有参数化构造函数的 Wpf 用户控件

    我们正在使用 Microsoft Unity 和依赖项注入 因此我们为用户控件提供了参数化构造函数 如何使用 XAML 将此依赖项注入到用户控件中 我已在 XAML 中添加了用户控件 如下所示 xmlns usrRefundArrivalP
  • 暴露底层控制的事件

    我在自定义控件中有一个组合框 如何向实现自定义控件的任何人 事物公开其中的特定事件 例如 SelectedIndexChanged 或 KeyPress 等 您可以像这样转发事件 public event EventHandler Sele
  • 绑定到列表的可编辑 DataGridView

    我有一个绑定到列表的 DataGridView 这些值显示良好 当我单击某个值时 它开始编辑 但是当我按 Enter 时 更改将被忽略 任何数据都不会更改 当我在值设置器中放置断点时 我可以看到它在编辑后执行 但没有显示更改的数据 我的绑定
  • WPF 中与 ControlPaint.Light 等效的是什么?

    与 ControlPaint Light 等效的 wpf 是什么 http msdn microsoft com en us library 3wz9t9fy 28VS 80 29 aspx http msdn microsoft com
  • 检测控件是否已释放

    在我的应用程序中 我有一个使用线程池执行异步操作的用户控件 线程池方法如下 private void AsyncFunction object state do the calculation refresh the grid data o
  • ComboBox 内容的自动宽度

    有谁知道如何设置ComboBox内容的宽度自动调整大小 我的意思不是ComboBox本身 只是打开的内容 你不能直接使用它 做一招 首先遍历组合框的所有项目 通过将文本分配给标签来检查每个项目的宽度 然后 每次检查宽度 如果当前项目的宽度大
  • C# - Winamp 风格 3 窗口捕捉应用程序

    如何在 C 和 net 2 0 中创建 Winamp 风格的多表单捕捉应用程序 Easy 创建三个表格 添加代码以自定义绘制一切在这三种形式上 添加逻辑来处理用户在任何表单上的任意位置单击和拖动 以便窗口正常移动 直到它与您自己的另一个表单
  • 基本 WinForm KeyDown 事件处理

    我正在使用 WinForms 我已经为KeyDown主窗体的事件 从而调用按钮的Click事件处理程序 The Click调用的事件处理程序取决于按下的特定键 如果用户单击该按钮而不是使用该键 然后随后尝试使用该键 则该键 例如向下箭头 将
  • 让设计者为 UserControl 的简单 List 属性生成 AddRange

    我创建了一个新的用户控件 如下所示 public partial class MyControl UserControl List
  • 具有不透明度的 WinForm 控件

    我有一个本身有一些控件的表单 btnCreateReport pnlDarkLayer 我有一个适合表单的面板 Dock Fill 它位于所有控件的背面 当用户单击 btnCreateReport 按钮时 我调用 pnlDarkLayer
  • 如何自动将VS2003类转换为部分Designer.cs文件?

    我正在将项目从 Visual Studio 2003 升级到 2008 并希望自动生成XXX Designer cs文件并更新相应的XXX cs原版的 有什么自动的方法吗 UPDATE 我指的是WinForms 当然 我知道旧样式有效 但我
  • 从 C# 检测 powerpoint 形状上的事件

    是否有可能检测在 Powerpoint 形状 例如箭头 上发生的事件 到目前为止 我发现唯一的可能性是 selectitemchanged beforerightclick 和 beforedoubleclick 但无法找到检测其他内容的方
  • 如何在非托管 ATL GUI 中嵌入 Windows 窗体?

    我有一个使 COM 可见的 Windows 窗体用户控件 现在我想将该控件嵌入到 ATL 对话框 GUI 中 ATL项目 非托管C 只应获取winform的progID并在运行时动态创建和嵌入它 这可能吗 如果可以 我该怎么做 我不确定 A
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace

随机推荐

  • 在 ASP.NET 中使用 Web API 相对于 Web 方法有什么优势

    我熟悉网络方法 现在我收到了使用 Web API 而不是 Web 方法的建议 我做了一个 ASP NET Web API 的演示 它更接近于MVC架构我正在使用经典的 ASP NET Web 开发 我不喜欢搞乱控制器 MVC概念 采用经典开
  • 警告:mysqli_connect():(HY000/2002):尝试以访问权限禁止的方式访问套接字

    这两天我一直在尝试解决这个问题 警告 mysqli connect HY000 2002 尝试以访问权限禁止的方式访问套接字 我的托管是Azure 他的界面非常糟糕 编程语言是PHP 我的数据库与域位于同一资源组中 帐户数据是正确的 我做错
  • 网络中的边长x

    我正在尝试通过以下代码调整两个节点之间的边的长度 但显然这不起作用 谁能指导我在哪里犯了错误 请注意 我已经看过这个帖子了 如何在 Networkx 中指定边长度来计算最短距离 https stackoverflow com questio
  • 如何在 Android Jelly Bean Launcher 中添加自定义视图

    我正在努力在 android 中制作自定义启动器 我参考了android的Jellybean启动器的代码 现在我想对这个启动器进行一些修改 我想要的是 据我们所知 默认有五个工作区屏幕 我想在任何一个工作区屏幕中添加自定义视图 我的 xml
  • 从数据库中提取行(包括相关行)

    我想为 Oracle 数据库中的一行生成插入字符串 包括其他表中的所有依赖行 及其依赖行 Example CREATE TABLE a a id number PRIMARY KEY name varchar2 100 CREATE TAB
  • PDO + MySQL 和损坏的 UTF-8 编码 [重复]

    这个问题在这里已经有答案了 我在 PHP 中将 PDO 库与 MySQL 数据库一起使用 但是如果我插入任何以 UTF 8 编码的数据 例如阿拉伯单词 它就会插入到数据库中 但作为 在我自己的框架中 创建 PDO 连接后 我发送两个查询 S
  • Solr:结合 EdgeNGramFilterFactory 和 NGramFilterFactory

    我有一种情况需要同时使用 EdgeNGramFilterFactory 和 NGramFilterFactory 我正在使用 NGramFilterFactory 执行 包含 样式搜索 最小字符数为 2 我还想搜索第一个字母 例如带有前面
  • 如何通过蓝牙查询远程手机是否支持PBAP?

    假设两部Android手机通过蓝牙配对并建立连接 如何在客户端以编程方式确定远程设备 服务器 是否支持蓝牙配置文件 例如 PBAP 如果它确实支持 那么如何以编程方式启动与远程设备的 PBAP 会话 我在网上进行了广泛的搜索 但到目前为止还
  • Apache Flink:设置并行度的指南?

    我正在尝试获取一些简单的规则或指南来设置哪些值 操作员或工作 并行性 在我看来 它应该是一个数字 例如 假设我有 2 台任务管理器机器 每台都有 4 个任务槽 假设集群上没有运行其他作业 我会设置并行度吗 用于操作 喜欢过滤并映射到 8 如
  • 如何将 Jest 模拟函数的范围限制为单个测试

    我正在使用 Jest 测试库 React 编写功能测试 经过几天的绞尽脑汁 我发现当你使用 mockResolvedValue or mockResolvedValueOnce 嘲笑的范围不仅限于该测试 import React from
  • C++ 多态性和指针向量问题

    考虑以下示例代码 class Foo class Bar public Foo class FooCollection protected vector
  • 如何阻止android editText中的特殊字符?没有 Android:数字

    如何阻止android editText中的特殊字符 通过不使用机器人 数字 有没有其他方法 甚至以编程方式 EditText 有一个 onTextChanged 监听器 你可以跟踪用户输入的字符 如果该字符非法 你只需将其删除 这不是最优
  • Celery 和 RabbitMQ - 队列优先级、消费者优先级、任务优先级

    在我的 python 应用程序中 我使用 Celery 作为任务生产者和消费者 使用 RabbitMQ 作为代理 现在 我正在实施优先级 起初 它看起来根本不起作用 因为根据文档 我刚刚添加了x max priority队列的参数 我更深入
  • MKPolygon 初始化错误“调用中参数‘interiorPolygons’缺少参数”/“调用中存在额外参数”

    我正在尝试转换 MapKit 中的 Objective C 代码MKPolygon参考文献清单6 9 https developer apple com library prerelease ios documentation UserEx
  • Gradle下载源码依赖

    在 gradle 中 我有以下 build gradle 这会导致许多 JAR 被复制到 sources 文件夹中 但只有 jersey media moxy 2 22 2 sources jar 实际上包含源代码 defaultTasks
  • MVVM ViewModel 单例

    如果您不需要每个屏幕的多个实例 那么将所有 viewModels 设置为单例是错误的做法吗 是的 因为单身人士是邪恶的 https learn microsoft com en us archive blogs scottdensmore
  • 数据帧字符串操作

    我有一个数据框 其中有一列数据如下所示 AAH AAH AAR UN AAR UN AAR UN AAR UN AAV AAV AAV 我想我需要使用 apply 方法来修剪列数据 因此 如果句点之后有任何内容 则保持数据不变 但如果句点之
  • 无法连接到火狐浏览器

    我正在研究 Selenium 目前我有一个集线器连接到两个运行 Linux 和所有浏览器的虚拟机 我能够启动浏览器 直到它突然停止 Firefox 或任何其他浏览器无法启动 我收到以下错误 45000 毫秒后无法通过端口 7055 连接到主
  • Cython 程序比普通 Python 慢(10M 选项 3.5s vs 3.25s Black Scholes)-我错过了什么?

    好的 这是我的第一个 Cython 程序 它是为欧洲期货期权定价的代码 没有股息的 Black Scholes 它在 10M 选项上的运行时间为 3 5 秒 而我在下面发布的直接使用 numpy Python 3 25 的代码 谁能指出为什
  • 如何为 UserControl 中的 TabControl 提供设计器支持,以便我可以将控件拖/放到选项卡页上?

    我有一个用户控件 其中包含一个Panel 和一个TabControl 我为两者启用了设计时支持 我可以将工具箱中的控件拖 放到用户控件中的面板控件上 我还可以通过 TabControl 上的设计器添加和删除选项卡页 但是 我无法将任何控件拖