如何在设计时公开复合控件内的子控件
使用UserControl制作一个复合控件,有时内部一个子控件很多属性、方法和事件都要和外部交互,如果要在UserControl重新公开这些接口将是一个工作量很大的事情,我们可以考虑直接向外公开这个子控件,就是在UserControl提供一个公有的属性可以直接访问到这个子控件,如果我们要做到设计时的控制,(就像Panel内的控件可以直接拖放的效果一样),我们就得使用自己的设计器Designer。通过Designer定制属性加载自己的设计器。
如:
[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方法公开子控件。
示例:
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
如何在设计时公开复合控件内的子控件相关推荐
- Winform中使用DevExpress时给控件添加子控件的方法
场景 在Winform中使用DevExpress时经常使用PanelControl控件用来进行布局设计,因此需要在代码中生成控件并添加子控件. 实现 一种是设置要添加的自控件的Parent属性为容器控 ...
- Windows环境下使用Python设计应用软件——【2】pyqt给控件添加功能(弹窗功能)
PS:本文主要用于自我整理总结,方便后续参考,如果恰好帮助到你,也是件值得高兴的事 之前我们简单设计了界面,现在是给控件加我们想要的功能的时候了. 首先我么要知道这个控件名是什么 然后是设置单击控件后 ...
- GUI设计禁忌 之一 ——使用了错误的控件
GUI设计禁忌 之一 --使用了错误的控件 一.混淆复选框和单选按钮 复选框和单选按钮是比较常见的两种不同控件,但是很多人不知道它们到底有什么区别. 单选按钮用于从多个值中选择一个,每一个值对应一个按 ...
- [UWP]实现一个轻量级的应用内消息通知控件
[UWP]实现一个轻量级的应用内消息通知控件 原文:[UWP]实现一个轻量级的应用内消息通知控件 在UWP应用开发中,我们常常有向用户发送一些提示性消息的需求.这种时候我们一般会选择MessageDi ...
- Android 软键盘弹出时把布局顶上去,控件乱套解决方法
Android 软键盘弹出时把布局顶上去,控件乱套解决方法 参考文章: (1)Android 软键盘弹出时把布局顶上去,控件乱套解决方法 (2)https://www.cnblogs.com/zhuj ...
- C# 采用系统委托的方式处理线程内操作窗体控件(转载)
C# 采用系统委托的方式处理线程内操作窗体控件 C# / asp.net / j 2009-12-25 10:04:47 阅读138 评论0 字号:大中小 订阅 一.System.Windows. ...
- 网页内嵌lodop控件,部分电脑一直提示未安装
网页内嵌lodop控件,部分电脑一直提示未安装 工作中遇到部分电脑的内嵌网页用不了lodop控件 lodop 提供了 C-Lodop 支持ppapi的打印方法. 工作中遇到部分电脑的内嵌网页用不了lo ...
- Ae 内置效果控件(合集)
有关 Ae 内置效果控件的说明,Adobe 官网提供了较详细的文档.但,MediaTea 仍然对所有内置效果的说明进行了重新编撰,主要目的是: 1.更便于查询,尤其便于使用手机进行快速查询. 2.关键 ...
- [转载]裸写一个含内嵌IE控件的窗口
引言 之前也做过一些含内嵌IE控件的东西,只是一直用MFC/ATL等框架,对于里面的原理其实一知半解,只有脱离它们写一遍,才算能真正懂.前不久在写一个SkyDriveClient的时候正好有一个需求, ...
最新文章
- 同时用引用和指针 int *a;
- ***帮兄设计实战分析
- PowerDesigner16.5安装
- nginx-2.nginx是什么
- Vue之v-if, v-else, v-show, v-for, v-bind
- Oracle Database Documentation
- FOR XML PATH 应用及其反向分解
- 数据结构_十字链表(C语言)
- php时间戳怎么转换成时间格式,php时间戳如何转换为时间格式
- windows配置代理
- 基于matlab分析的商业保险案例
- 成功搭建Selenium运行环境,能够使用Chrome浏览器打开任意网页
- 提前还贷怎样才划算 多还本金减少期限最划算
- Jzoj4896 兔子
- 好用一些的真无线蓝牙耳机,音质好的真无线蓝牙耳机
- 2021.02.17 GDKOI2021 好题记 第一记
- 快手小店通效果好吗?
- 又一本宝藏级Python教程,清华大学监制出版,附电子版!
- 2021年11月11日文章读后感
- 【Vue】9 - 组件(全局、局部)、通信(props、$meit、$refs)、插槽slot、component、$nextTick等