Winform 开发用户控件
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 开发用户控件相关推荐
- winform开发-CheckedListBox控件
winform开发-CheckedListBox控件 主要说明一下CheckedListBox两个事件:ItemCheck事件和SelectedValueChanged事件 ItemCheck事件:某 ...
- c# WinForm开发 DataGridView控件的各种操作
一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index ...
- c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index ...
- winform 读取用户控件的变量_winform中用户控件之间的传值
@让手指在键盘上飞舞: 第一种方法: 创建一个类,里面声明用于存储接收的字段.传的时候存储于字段中,要用的时候,直接类名.字段名 进行调用.(这种方法传递是双向的) 第二种方法: 1.在Form1里定 ...
- 开发和使用Web用户控件
在 ASP.NET 的开发中 Web 用户控件的开发和使用是一项必不可少的技术,在对这项技术的一番研究后写下了这篇随笔,不过确实担心这么初级的东东放到原创首页上会被拍砖头. 1.简介 2.创建 Web ...
- ASP.NET开发:在用户控件中添加属性
在WEB开发中,可重用的代码我们可以把它写成一个通用模块供需要的地方来引用.本文就是介绍在ASP.NET的web编程时,如何在用户控件中添加属性,实现这种方法:举例说明详解. 在WEB开发中经常有一些 ...
- [MOSS开发]:通过简单BUG跟踪Demo阐述用户控件对列表的操作
下面的文章我想以一个具体的BUG跟踪Demo来说明MOSS的具体应用,这里面会应用到下面的知识点: 1:用户组,用户的创建,权限分配: 2:列表的概念以及创建: 3:利用用户控件来完成表单的增加加功能 ...
- [MOSS开发]:如何使用用户控件
如果是纯手工开发web part,其实还是比较困难的,因为这种类型的web part是以类库的形式出现,没有可视化的界面,完全由代码写出来,包含控件的样式,属性,事件等等.开发过自定义控件的朋友可能会 ...
- Asp.net 2.0 自定义控件开发专题讲解[为用户控件增加DataSource属性, 能够自动识别不同数据源](示例代码下载)...
(一). 概要 开发<数据绑定用户控件>, 要实现一个DataSource属性, 并且能够自动识别不同的数据源, 如: ArrayList, DataTable, DataSet, XM ...
- Winform中使用用户控件实现带行数和标尺的RichTextBox(附代码下载)
场景 RichTextBox控件允许用户输入和编辑文本的同时提供了比普通的TextBox控件更高级的格式特征. 效果 注: 博客主页: https://blog.csdn.net/badao_lium ...
最新文章
- RabbitMQ安装
- 以太坊和Metamask开发web应用时不再需要密码
- 专接本微型计算机原理考试,河北省2009年专接本-微型计算机原理与汇编语言试卷...
- 目标检测评价标准 精准度(precision)、召回率(recall)、准确率(accuracy)、交除并(IoU)【全】
- 【Python】装上后这 14 个插件后,PyCharm 真的是无敌的存在
- Java培训教程之使用Jsoup实现简单的爬虫技术
- mysql数据库入门教程(8):数据的基本类型
- 引导页 设置只显示一次
- C语言表达式的求解规则,C语言实现整数四则运算表达式的计算
- 一杯水怎么测试_天气渐热食欲差、体质虚怎么办?每天一杯能量水——驼奶
- Java之消息摘要之commons codec
- 实现redis集群的批量pineline操作
- python app逆向_python之app逆向破解data参数中的PassWord DES加密无填充
- DFS(深度优先搜索,附例题)
- 一个Query Builder,征集更好用的Query Builder的设计方案
- 通用权限管理系统项目简单介绍
- android 闪屏动态界面,Android 实现闪屏
- Vue elementui 实现表格selection的默认勾选
- 数据结构上机实验之串子系统
- eem二级c语言题库哪种比较好,EEM18DCAD边缘板连接器供应【科美奇科技】Sullins华南地区渠道商...
热门文章
- 中国科学院大学数学院本科生教材
- garmin 945_点评:Garmin Nuvi 350 GPS
- 自然语言处理领域重要论文资源全索引
- linux rs232驱动程序,Ubuntu安装USB to RS232驱动
- 用计算机绘制阀体各零件步骤,计算机绘图课程设计.doc
- SQL server 2017安装教程
- JS如何判断一个对象是否为JSON对象
- Ubuntu 安装 OpenCV 教程 【slam14讲行不通可以看看】
- 非参数统计的Python实现—— Fisher 精确性检验
- 计算机快捷截图方式,电脑如何快速截图,电脑快速截屏的几种方法