使用VS C#无论是WinForm开发,还是WebForm 开发都会遇到一个问题:在Form布局时,会重复使用相同的一组控件。如下图中的控件

这一组控件是非常常用的,但是如果每一次布局相似的窗体时,都对这些控件进行属性设置会是一件非常没有技术含量的工作。通常这时就需要用到用户控件了。

在当前的项目上添加新建项,在弹出的对话框中选择"用户控件":

在下面的名称设置一下用户控件的名称。这里我就命名为:DataArea。在生成的用户控件设计窗体,布局控件:

编辑完成后保存,然后生成项目。

回到Form的设计器中,在工具箱第一栏中就可以找到自定义的用户控件。

如果没有的话,可以点击项目-刷新项目工具箱项

这些都比较简单,但关键是问题是,生成的用户控件默认是不会暴露子控件的属性。比如:你无法直接使用用户控件的实例来设置子控件DatePicker的value属性来设置日期值。这里有二种做法

方法一 、

在设计用户控件时,就暴露子控件的一些属性,把这些属性设计为用户控件的公用属性。这样,直接调用用户控件的这些设置好的属性就可以设置或者取得子控件的属性了,同时这样的设计还有良好的封装性

public DateTime startdate{get{return(start_dateTimePicker.Value);}set{start_dateTimePicker.Value = value;}}public DateTime enddate{get{return(end_dateTimePicker.Value);}set{end_dateTimePicker.Value = value;}}

对于按钮事件的暴露我们这样做

public event EventHandler BtnTestClick;//定义事件public void button_Click( object sender, EventArgs e ){if ( BtnTestClick != null ){/* TODO */BtnTestClick( sender, e );}}

重新生成一下项目

这时我们会发现放在form里自定义的控件的属性多了一个事件

我们在窗口form应用程序写代码如下

DataArea UserControldate = new DataArea();public Form1(){InitializeComponent();UserControldate.startdate   = DateTime.Today.AddDays( -1 );UserControldate.enddate     = DateTime.Today.AddDays( -7 );}private void dataArea1_BtnTestClick( object sender, EventArgs e ){MessageBox.Show( "开始日期" + UserControldate.startdate + "\n结束日期" + UserControldate.enddate );}

下面是demo文件

点击下载

不能设置0积分下载,大家注册一下就能有下载币,

不想注册的同学,请关注微信公众号,找到下载专区->博客附件,编号0006的下载资源,免费获得

自定义用户控件的使用相关推荐

  1. VS2010 自定义用户控件未出现在工具箱的解决方案

    VS2010 自定义用户控件未出现在工具箱的解决方案 参考文章: (1)VS2010 自定义用户控件未出现在工具箱的解决方案 (2)https://www.cnblogs.com/lyout/arch ...

  2. ASP.NET中实现复用代码自定义用户控件UserControl的使用

    场景 ASP.NET中新建Web网站并部署到IIS上(详细图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/107199 ...

  3. ASP.NET分页存储过程自定义用户控件

    网上有很多分页存储过程,但是基本上都是提供一个单纯的存储过程,没有具体的怎样去实现.最近做一个项目用户的数数据相当大(一百万以上的数据),如果用.NET自带的分页基本上是跑不动了,不是提示超时就是死在 ...

  4. (八)ASP.NET自定义用户控件(1)

    http://blog.csdn.net/laodao1/article/details/5897366 ASP.NET自定义控件组件开发 第一章:从一个简单的控件谈起 起始开发ASP.NET自定义控 ...

  5. 自定义用户控件,实在数据动态提示

    做公司内部项目时,公司在输入查询条件的TextBox框中,要求实现数据动态提示.这一下子就让我郁闷了.以前没有做过啊.只好上网找罗.终于找到了一些这方面的资料.功能基本上也实现了.可是在输入中文条件时 ...

  6. C#自定义用户控件之分页

    形形色色的分页控件很多,有些可满足我们的要求,但有些却不一定,下面是我在工作当中遇到的问题而随手写了个能满足某些功能的自定义分页控件: 控件源代码: <%@ Control Language=& ...

  7. C# 自定义用户控件报错 UserControl是“命名空间”,但此处被当做“类型”来使用

    今天从VS 2015转成VS 2022的时候遇到这样一个问题,经过多种测试后发现是因为程序目录下存放用户控件的文件夹名称是UserControl文件夹导致的,将文件夹名称改为UserControls后 ...

  8. 自定义用户控件显示属性分类、描述、默认值

    在网上查了相关资料,大概例子如下: using System.ComponentModel; bool _IsCheck = true;     [Bindable(true), DefaultVal ...

  9. Asp.net 用户控件和自定义控件注册

    在ASPX页中注册用户控件的方法 <%@ Register Src="ListPicker.ascx" TagName="ListPicker"  Tag ...

最新文章

  1. 福利 | 送你一张通往「2019 AI开发者大会」的门票
  2. matplotlib.pyplot中add_subplot方法参数111的含义
  3. PyTorch-数据准备
  4. php’s fopen() 函数
  5. CF626F. Bear and Fair Set
  6. 分布式是写出来的(四)
  7. Steve Thair谈DevOps on Windows的演变与面临的挑战
  8. mysql group by cube_group by、grouping sets、with rollup、with cube方法
  9. 微软应用商店_微软应用商店,居然藏着这8款神器?!
  10. Mac上java开发工具
  11. 使用OpenSSL生成证书 pem文件的生成 celery Security
  12. 51单片机系列--8位数码管
  13. 各种坐标之间的转换方法汇总
  14. 计算机主机地址填什么,什么是IP地址 何设置IP地址
  15. PyQt4转PyQt5心得
  16. Solidity 投票案例
  17. 可爱的猫咪怎么画?超详细教你如何绘画可爱的猫咪!
  18. 图片自动适应表格的大小
  19. PyCharm许可证过期解决方案
  20. 解决can't handle non absolute segment in ljmp 的问题

热门文章

  1. Java 算法 王、后传说
  2. python拆开tuple为多个值传入函数(tuple拆包)
  3. Centos/Linux在线环境下载安装包,到离线环境安装,并解决依赖问题
  4. python取两个列表的并集、交集、差集
  5. php post undefined index,PHP 中提示undefined index如何解决(多种方法)
  6. idea设置关键字颜色_IDEA字体颜色快速导入辅助工具设置
  7. python listdir报错_Python常见十六个错误集合,你知道那些?
  8. mysql basedao_JDBC之BaseDao类
  9. 【题解】BZOJ5093图的价值(二项式+NTT)
  10. CAS客户端认证流程