winform提供了很多的控件可供选择,这其中最常用的如label,button,textbox等等,几乎出现在所有的winform中。但是有些时候又会想要自己开发一个控件。本文主要介绍了开发用户控件(继承自UserControl的控件)的基本流程。

首先建立一个工程:

可以看到已经自动为我们添加了一个叫做UserControl1的控件

那么进入正题:

一.为你的控件添加属性

自定义控件继承自UserControl类,因此本身就具有UserControl的许多属性。如果你想添加新的属性,那么只需在控件类中定义属性并公开即可:

随后我们可以在控件测试容器中看到该属性

注意:在控件代码中定义字段是如果赋初值,就会在测试容器中显示(如果为空则测试容器显示为空)

二.为你的控件添加事件,方法

添加方法是很简单的,只需要在你的控件代码中写一个公开的方法即可。

下面我们来说说添加事件:

代码如下

        //定义委托public delegate void MyEventHandle(object sender,EventArgs e);//定义事件public event MyEventHandle MyEvent; //定义事件的触发条件,点击控件,触发MyEvent事件private void UserControl1_Click(object sender, EventArgs e){if (MyEvent != null){MyEvent(sender, e);}}

事实上,定义委托这一步其实并不需要,因为winform为我们提供了EventHandler委托,通过MSDN可以看到其定义

因此实际上我们可以直接使用EventHandler来定义我们的事件

新建一个工程,将控件添加到form中,可以看到我们定义的事件:

这样,当你点击该控件的时候将会调用MyEvent事件

三.改变你控件的形状

通过重写onPaint方法,可以用GDI绘图自定义自己控件的形状

        protected override void OnPaint(PaintEventArgs e){Graphics g = e.Graphics;g.FillEllipse(Brushes.Green, 0, 0, this.Width, this.Height);base.OnPaint(e);}

然而通过这种方法并没有实质上改变控件的形状,即上面的控件在拖动到窗体使用时仍然占用的是一个矩形区域,关于这一点,只需要将属性BackColor设置为别的颜色就可以看到(事实上设置为Trasparent属性后基本可以避免绝大多数问题)

总结:我们已经讲完了用户控件的基本元素(属性,方法,事件)都是如何添加的,然而要开发自己的控件绝不是一件容易的事情,比如说要绘制图形,GDI绘图至少是基本了。此外,控件在测试容器中运行时没有进行大小的调整,而实际使用过程中这是无法避免的。因此也有必要对控件的Resize做一些编写(或者你可以放到使用控件的窗体中实现,但那肯定不如你在控件中实现更好)。

Winform 开发用户控件相关推荐

  1. winform开发-CheckedListBox控件

    winform开发-CheckedListBox控件 主要说明一下CheckedListBox两个事件:ItemCheck事件和SelectedValueChanged事件 ItemCheck事件:某 ...

  2. c# WinForm开发 DataGridView控件的各种操作

    一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value);  // 取得当前单元格的列 Index ...

  3. c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)

    一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index ...

  4. winform 读取用户控件的变量_winform中用户控件之间的传值

    @让手指在键盘上飞舞: 第一种方法: 创建一个类,里面声明用于存储接收的字段.传的时候存储于字段中,要用的时候,直接类名.字段名 进行调用.(这种方法传递是双向的) 第二种方法: 1.在Form1里定 ...

  5. 开发和使用Web用户控件

    在 ASP.NET 的开发中 Web 用户控件的开发和使用是一项必不可少的技术,在对这项技术的一番研究后写下了这篇随笔,不过确实担心这么初级的东东放到原创首页上会被拍砖头. 1.简介 2.创建 Web ...

  6. ASP.NET开发:在用户控件中添加属性

    在WEB开发中,可重用的代码我们可以把它写成一个通用模块供需要的地方来引用.本文就是介绍在ASP.NET的web编程时,如何在用户控件中添加属性,实现这种方法:举例说明详解. 在WEB开发中经常有一些 ...

  7. [MOSS开发]:通过简单BUG跟踪Demo阐述用户控件对列表的操作

    下面的文章我想以一个具体的BUG跟踪Demo来说明MOSS的具体应用,这里面会应用到下面的知识点: 1:用户组,用户的创建,权限分配: 2:列表的概念以及创建: 3:利用用户控件来完成表单的增加加功能 ...

  8. [MOSS开发]:如何使用用户控件

    如果是纯手工开发web part,其实还是比较困难的,因为这种类型的web part是以类库的形式出现,没有可视化的界面,完全由代码写出来,包含控件的样式,属性,事件等等.开发过自定义控件的朋友可能会 ...

  9. Asp.net 2.0 自定义控件开发专题讲解[为用户控件增加DataSource属性, 能够自动识别不同数据源](示例代码下载)...

    (一).  概要 开发<数据绑定用户控件>, 要实现一个DataSource属性, 并且能够自动识别不同的数据源, 如: ArrayList, DataTable, DataSet, XM ...

  10. Winform中使用用户控件实现带行数和标尺的RichTextBox(附代码下载)

    场景 RichTextBox控件允许用户输入和编辑文本的同时提供了比普通的TextBox控件更高级的格式特征. 效果 注: 博客主页: https://blog.csdn.net/badao_lium ...

最新文章

  1. RabbitMQ安装
  2. 以太坊和Metamask开发web应用时不再需要密码
  3. 专接本微型计算机原理考试,河北省2009年专接本-微型计算机原理与汇编语言试卷...
  4. 目标检测评价标准 精准度(precision)、召回率(recall)、准确率(accuracy)、交除并(IoU)【全】
  5. 【Python】装上后这 14 个插件后,PyCharm 真的是无敌的存在
  6. Java培训教程之使用Jsoup实现简单的爬虫技术
  7. mysql数据库入门教程(8):数据的基本类型
  8. 引导页 设置只显示一次
  9. C语言表达式的求解规则,C语言实现整数四则运算表达式的计算
  10. 一杯水怎么测试_天气渐热食欲差、体质虚怎么办?每天一杯能量水——驼奶
  11. Java之消息摘要之commons codec
  12. 实现redis集群的批量pineline操作
  13. python app逆向_python之app逆向破解data参数中的PassWord DES加密无填充
  14. DFS(深度优先搜索,附例题)
  15. 一个Query Builder,征集更好用的Query Builder的设计方案
  16. 通用权限管理系统项目简单介绍
  17. android 闪屏动态界面,Android 实现闪屏
  18. Vue elementui 实现表格selection的默认勾选
  19. 数据结构上机实验之串子系统
  20. eem二级c语言题库哪种比较好,EEM18DCAD边缘板连接器供应【科美奇科技】Sullins华南地区渠道商...

热门文章

  1. 中国科学院大学数学院本科生教材
  2. garmin 945_点评:Garmin Nuvi 350 GPS
  3. 自然语言处理领域重要论文资源全索引
  4. linux rs232驱动程序,Ubuntu安装USB to RS232驱动
  5. 用计算机绘制阀体各零件步骤,计算机绘图课程设计.doc
  6. SQL server 2017安装教程
  7. JS如何判断一个对象是否为JSON对象
  8. Ubuntu 安装 OpenCV 教程 【slam14讲行不通可以看看】
  9. 非参数统计的Python实现—— Fisher 精确性检验
  10. 计算机快捷截图方式,电脑如何快速截图,电脑快速截屏的几种方法