使用UserControl制作一个复合控件,有时内部一个子控件很多属性、方法和事件都要和外部交互,如果要在UserControl重新公开这些接口将是一个工作量很大的事情,我们可以考虑直接向外公开这个子控件,就是在UserControl提供一个公有的属性可以直接访问到这个子控件,如果我们要做到设计时的控制,(就像Panel内的控件可以直接拖放的效果一样),我们就得使用自己的设计器Designer。通过Designer定制属性加载自己的设计器。

如:

Code
[Designer(typeof(LawCaseDesigner))]
[DesignTimeVisible(true)]
[DefaultEvent("SearchLawCase")]
public partial class CtrlLawCaseSearch : UserControl
{
        /// <summary>
        /// 搜索按键
        /// </summary>
        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        public XPButton BtnSearch
        {
            get { return this.btnSearch; }
        }
……

如果单单想公开一个或多个子控件,自己的设计器可以从ControlDesigner派生;在公司子控件的同时又想把这个UserControl作为一个容器,可以从ParentControlDesigner派生。

通过重写Initialize()方法,使用EnableDesignMode方法公开子控件。

示例:

LawCaseDesigner
   internal class LawCaseDesigner : ParentControlDesigner
    {
        private CtrlLawCaseSearch MyControl;
        public override void Initialize(IComponent component)
        {
            base.Initialize(component);
           // Record instance of control we're designing
            MyControl = (CtrlLawCaseSearch)component;
            this.EnableDesignMode(MyControl.BtnSearch, "btnSearch");
            //this.EnableDesignMode(MyControl.BtnTest, "BtnTest");
        }
    }

转载于:https://www.cnblogs.com/Yjianyong/archive/2009/08/06/1540676.html

如何在设计时公开复合控件内的子控件相关推荐

  1. Winform中使用DevExpress时给控件添加子控件的方法

    场景 在Winform中使用DevExpress时经常使用PanelControl控件用来进行布局设计,因此需要在代码中生成控件并添加子控件. 实现 一种是设置要添加的自控件的Parent属性为容器控 ...

  2. Windows环境下使用Python设计应用软件——【2】pyqt给控件添加功能(弹窗功能)

    PS:本文主要用于自我整理总结,方便后续参考,如果恰好帮助到你,也是件值得高兴的事 之前我们简单设计了界面,现在是给控件加我们想要的功能的时候了. 首先我么要知道这个控件名是什么 然后是设置单击控件后 ...

  3. GUI设计禁忌 之一 ——使用了错误的控件

    GUI设计禁忌 之一 --使用了错误的控件 一.混淆复选框和单选按钮 复选框和单选按钮是比较常见的两种不同控件,但是很多人不知道它们到底有什么区别. 单选按钮用于从多个值中选择一个,每一个值对应一个按 ...

  4. [UWP]实现一个轻量级的应用内消息通知控件

    [UWP]实现一个轻量级的应用内消息通知控件 原文:[UWP]实现一个轻量级的应用内消息通知控件 在UWP应用开发中,我们常常有向用户发送一些提示性消息的需求.这种时候我们一般会选择MessageDi ...

  5. Android 软键盘弹出时把布局顶上去,控件乱套解决方法

    Android 软键盘弹出时把布局顶上去,控件乱套解决方法 参考文章: (1)Android 软键盘弹出时把布局顶上去,控件乱套解决方法 (2)https://www.cnblogs.com/zhuj ...

  6. C# 采用系统委托的方式处理线程内操作窗体控件(转载)

    C# 采用系统委托的方式处理线程内操作窗体控件 C# / asp.net / j 2009-12-25 10:04:47 阅读138 评论0   字号:大中小 订阅 一.System.Windows. ...

  7. 网页内嵌lodop控件,部分电脑一直提示未安装

    网页内嵌lodop控件,部分电脑一直提示未安装 工作中遇到部分电脑的内嵌网页用不了lodop控件 lodop 提供了 C-Lodop 支持ppapi的打印方法. 工作中遇到部分电脑的内嵌网页用不了lo ...

  8. Ae 内置效果控件(合集)

    有关 Ae 内置效果控件的说明,Adobe 官网提供了较详细的文档.但,MediaTea 仍然对所有内置效果的说明进行了重新编撰,主要目的是: 1.更便于查询,尤其便于使用手机进行快速查询. 2.关键 ...

  9. [转载]裸写一个含内嵌IE控件的窗口

    引言 之前也做过一些含内嵌IE控件的东西,只是一直用MFC/ATL等框架,对于里面的原理其实一知半解,只有脱离它们写一遍,才算能真正懂.前不久在写一个SkyDriveClient的时候正好有一个需求, ...

最新文章

  1. 同时用引用和指针 int *a;
  2. ***帮兄设计实战分析
  3. PowerDesigner16.5安装
  4. nginx-2.nginx是什么
  5. Vue之v-if, v-else, v-show, v-for, v-bind
  6. Oracle Database Documentation
  7. FOR XML PATH 应用及其反向分解
  8. 数据结构_十字链表(C语言)
  9. php时间戳怎么转换成时间格式,php时间戳如何转换为时间格式
  10. windows配置代理
  11. 基于matlab分析的商业保险案例
  12. 成功搭建Selenium运行环境,能够使用Chrome浏览器打开任意网页
  13. 提前还贷怎样才划算 多还本金减少期限最划算
  14. Jzoj4896 兔子
  15. 好用一些的真无线蓝牙耳机,音质好的真无线蓝牙耳机
  16. 2021.02.17 GDKOI2021 好题记 第一记
  17. 快手小店通效果好吗?
  18. 又一本宝藏级Python教程,清华大学监制出版,附电子版!
  19. 2021年11月11日文章读后感
  20. 【Vue】9 - 组件(全局、局部)、通信(props、$meit、$refs)、插槽slot、component、$nextTick等

热门文章

  1. 10道C++输出易错笔试题收集(敢进来挑战吗?)
  2. [Google Guava] 9-I/O
  3. Dubbo 源码分析 - 集群容错之 Router
  4. Java直接内存与堆内存
  5. Java SE 6 新特性 Instrumentation 新功能
  6. Tomcat系列之Java技术详解
  7. Ubuntu下git使用教程
  8. 机器学习算法与Python实践之(二)支持向量机(SVM)初级
  9. 关于在 Ubuntu 上安装 SteamOS session
  10. SQL语句where,Group By,having order by 的详细使用方法