如何为 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 提供设计器支持,以便我可以将控件拖/放到选项卡页上? 的相关文章

  • 为什么在按下 Tab 键之前​​不显示焦点矩形?

    我有一个奇怪的问题 可能只是为了理解 为什么在测试应用程序中 直到我按 Tab 键才显示焦点矩形 我想显示一个带有两个单选框和两个按钮的对话框 当我显示对话框时 我希望在第一个单选按钮周围看到一个焦点矩形 以便用户可以看到焦点在哪里 我对控
  • 当移动到控件的 ScrollBar 上时触发 MouseLeave 事件

    由于无法解决问题 我重新发布此问题 原始here https stackoverflow com questions 2024393 treeview mouseleave event fires when moves over scrol
  • 如何在VB.NET中画一条线

    我正在尝试用 VB NET 画一条简单的线 我的代码如下 但是当我运行代码时 只显示表单 没有线 我在这里做错了什么 Public Class Form1 Dim pen As System Drawing Graphics Private
  • 为什么最后一个关闭的 MDI 子窗体没有被垃圾回收?

    我们的应用程序中存在内存泄漏问题 我已成功通过以下简单示例复制了其中一个问题 复制设置 1 创建以下辅助类 用于跟踪对象创建 销毁 public class TestObject public static int Count get se
  • 同步执行异步函数

    我对此主题进行了大量搜索 并且阅读了本网站上有关此主题的大部分帖子 但是我仍然感到困惑 我需要一个直接的答案 这是我的情况 我有一个已建立的 Winform 应用程序 但无法使其全部 异步 我现在被迫使用一个全部编写为异步函数的外部库 在我
  • DataGridView SortCompare 事件不会触发

    使用 VS2008 C 和 NET 3 5 我正在使用数据绑定 DataGridView 控件来显示从 Web 服务读取的表格数据 在某些情况下 有一个数字列需要排序 我尝试了几种不同的方法来使其工作 但该列最终仍然按字母顺序排序 即 1
  • 从 datagridview 选定的行更新 mysql 数据库

    我有一个 datagridview 它在表单加载事件上加载 mysql 数据库表 t pi clients 并且我有另一个选项卡 其中包含 t pi client 相应列的文本框 它能够从 fullrowselect 模式获取数据到这些文本
  • 让 WIX 在项目中包含引用

    我对 WiX 和设置自定义安装程序完全陌生 所以我对问题的主题表示歉意 我有一个内部业务应用程序 日记 它构建并运行良好 因此我按照教程 官方文档添加 WiX 项目并引用日记的 csproj 然后构建并运行这个最基本版本的 WiX 安装程序
  • 如何从 WPF 窗口显示 Winforms 对话框?

    这个问题的反面已经被回答过很多次了 public static void SetOwner object activeWindow object dialog if IsWindow dialog IsWindow activeWindow
  • 编辑 InitializeComponent() 方法 C#

    我已经浏览了多个资源 试图找到何时手动向 InitializeComponent 添加代码的用例 但没有找到任何具体的内容 这表明我们不应该这样做 InitializeComponent 方法中的代码由设计者生成 不应手动修改 https
  • 如何防止控件在 TableLayoutPanel 内调整大小时视觉上滞后?

    我有一个基于多个嵌套的中等复杂度的布局TableLayoutPanels 调整窗体大小会导致更深嵌套表内的控件在视觉上滞后于调整大小 首先 这使得它们看起来像是在调整表单大小时四处移动 但更糟糕的是 当它们滞后到足以离开分配的表格单元格时
  • 如何在输入错误的情况下回滚 gridview 中的更改

    我有一个绑定到对象列表的 DataGridView 它有一些用户可以编辑的列 某些输入对于整个行来说是不允许的 如果用户在某些单元格中输入无效输入 我该如何回滚 我尝试使用 RowValidating 事件处理程序 但在更改单元格值后未调用
  • C# 和月历,选择多个日期

    我正在制作一个程序 可以帮助人们用 C 为某个部门 预订 订单 他们需要能够选择不同月份的多个日期 我更愿意拥有它 这样他们就可以单击一个日期 然后按住 Shift 键单击另一个日期以选择这两个日期之间的所有日期 并控制单击以进行单选 取消
  • DataGridView 列中的数字文本框

    我有一个DataGridView 我想要它的第一列或任何所需的列 其中有textboxes在其中 成为NUMERIC ONLY 我目前正在使用这段代码 private void dataGridViewItems EditingContro
  • C# Winforms Designer 无法打开,因为它无法在同一程序集中找到类型

    我收到以下错误 找不到类型 My Special UserControl 请确保引用包含此类型的程序集 如果此类型是您的开发项目的一部分 请确保已使用当前平台或任何 CPU 的设置成功构建该项目 但没有任何意义的是My Special Us
  • 在 C# 中选择动态创建的列表框项目

    我动态创建了一个Listbox并用一些项目填充它 在输入一个点后Textbox我想展示Listbox以便用户可以使用箭头键选择任何项目 到目前为止我已经做了所有事情 当用户在其中输入一个点时Textbox The Listbox显示 但方向
  • TextBox 焦点的 WinForms 事件?

    我想添加一个偶数TextBox当它有焦点时 我知道我可以用一个简单的方法来做到这一点textbox1 Focus并检查布尔值 但我不想那样做 我想这样做 this tGID Focus new System EventHandler thi
  • 从 Form2 访问 Form1 控件

    有两个表单 Form1和Form2 Form1有一个按钮 btnNew 单击时打开Form2 并且被禁用 我需要再次启用该按钮 只有当Form2关闭时 用户也需要同时使用Form1 这段代码不再启用该按钮 我哪里失踪了 在表格1中 priv
  • MonoState、Singleton 或派生形式:CRUD 应用程序的最佳方法?

    我有一个相当大的 CRUD WinForm 应用程序 其中有许多对象 人员 注册 计划 案例注释等 该应用程序由 30 多种表单组成 UI 逻辑上被分解 会员 注册 计划 案例说明等 我正在尝试弄清楚如何创建我的人物对象搜索后搜索表格并将对
  • 如何在列表框项目之间画一条线

    我希望能够用水平线分隔列表框中的每个项目 这只是我用于绘制项目的一些代码 private void symptomsList DrawItem object sender System Windows Forms DrawItemEvent

随机推荐

  • 在 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 上的设计器添加和删除选项卡页 但是 我无法将任何控件拖