C#中自定义控件VS用户控件大比拼

1 自定义控件与用户控件区别
WinForm中,
用户控件(User Control):继承自 UserControl,主要用于开发 Container 控件,Container控件可以添加其他Controls控件
自定义控件(Custom Control):继承自 Control,主要用于开发windows控件的最基本的类,比如 Text,Button 控件
2 要开发自己的控件的几种方法[1]
复合控件(Composite Controls):将现有的各种控件组合起来,形成一个新的控件,来满足用户的需求。
扩展控件(Extended Controls):就是在现有的控件基础上,派生出一个新的控件,增加新的功能,或者修改原有功能,来满足用户需求。
自定义控件(Custom Controls):就是直接从System.Windows.Forms.Control类派生,也就是说完全由自己来设计、实现一个全新的控件,这是最灵活、最强大的方法,但是,对开发者的要求也是最高的。要实现一个自定义控件,必须为Control类的的OnPaint事件编写代码,在OnPaint事件中实现自定义控件的绘制工作。同时,还可以重写Control类的WndProc方法,来处理底层的Windows消息。所以说,要实现一个自定义控件,对开发者的要求较高,要求开发者必须了解GDI+和Windows API的知识。
3 示例:Clock User Control[1]
源代码
Steps:
1. 新建一个Windows控件库项目(从UserControl派生)
2. 添加一个Timer控件,并设置属性(Enable=True, Interval=1000)和事件 (Ticker=Time1_Tick)
private void timer1_Tick(object sender, EventArgs e)
{
this.Time = DateTime.Now;
Refresh();
}
3. 重写OnPaint事件,绘制用户界面
图1 重写OnPaint事件,绘制用户界面
#region draw clock
private void UserClock_Paint(object sender, PaintEventArgs e)
{
Graphics dc = e.Graphics;
Pen pn = new Pen(ForeColor);
SolidBrush br = new SolidBrush(ForeColor);
initCoordinates(dc);
DrawDots(dc, br);
DrawHourHand(dc, pn);
DrawSecondHand(dc, pn);
DrawMinuteHand(dc, pn);
}
public void initCoordinates(Graphics dc)
{
if (this.Width == 0 || this.Height == 0) return;
dc.TranslateTransform(this.Width / 2, this.Height / 2);
dc.ScaleTransform(this.Height / 250F, this.Width / 250F);
}
public void DrawDots(Graphics dc, Brush brush)
{
int iSize;
for (int i = 0; i <= 59; i++)
{
if (i % 5 == 0)
{
iSize = 15;
}
else
{
iSize = 5;
}
dc.FillEllipse(brush, -iSize / 2, -100 - iSize / 2, iSize, iSize);
dc.RotateTransform(6);
}
}
public virtual void DrawHourHand(Graphics grfx, Pen pn)
{
GraphicsState gs = grfx.Save();
grfx.RotateTransform(360.0F * Time.Hour / 12 + 30.0F * Time.Minute / 60);
grfx.DrawLine(pn, 0, 0, 0, -50);
grfx.Restore(gs);
}
public virtual void DrawMinuteHand(Graphics grfx, Pen pn)
{
GraphicsState gs = grfx.Save();
grfx.RotateTransform(360.0F * Time.Minute / 60 + 6.0F * Time.Second / 60);
grfx.DrawLine(pn, 0, 0, 0, -70);
grfx.Restore(gs);
}
public virtual void DrawSecondHand(Graphics grfx, Pen pn)
{
GraphicsState gs = grfx.Save();
grfx.RotateTransform(360.0F * Time.Second / 60);
grfx.DrawLine(pn, 0, 0, 0, -100);
grfx.Restore(gs);
}
#endregion
4. 生成用户控件
5. 测试用户控件
创建WinForm应用程序,在Toolbox添加Tab "User Control",再往其中拖入第4步中生成的自定义控件的dll文件。再把Toolbox中的用户控件“UserControlClock”拖到界面“Form1”中,如下图所示。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# C#
# 自定义控件
# 用户控件
# C#创建自定义控件及添加自定义属性和事件使用实例详解
# c# Winform自定义控件-仪表盘功能
# C#自定义IP输入框控件
# C#设计模式之Template模板方法模式实现ASP.NET自定义控件 密码强度检测功能
# C# winform自定义翻页控件详解
# C#自定义控件实现TextBox禁止粘贴的方法
# C#实现用户自定义控件中嵌入自己的图标
# C#自定义控件添加右键菜单的方法
# 解析C#自定义控件的制作与使用实例的详解
# C#创建自定义控件的示例
# 自定义
# 重写
# 主要用于
# 自己的
# 这是
# 还可以
# 基础上
# 较高
# 所示
# 再把
# 大比拼
# 拖到
# 源代码
# 大家多多
# 如下图
# 新建一个
# 应用程序
# 再往
# 全由
# 几种方法
相关文章:
香港服务器租用每月最低只需15元?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
Python文件管理规范_工程实践说明【指导】
建站主机如何选?性能与价格怎样平衡?
建站之星导航配置指南:自助建站与SEO优化全解析
小型网站建站如何选择虚拟主机?
家具网站制作软件,家具厂怎么跑业务?
淘宝制作网站有哪些,淘宝网官网主页?
制作网站的公司有哪些,做一个公司网站要多少钱?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
建站主机功能解析:服务器选择与快速搭建指南
建站之星如何防范黑客攻击与数据泄露?
ppt制作免费网站有哪些,ppt模板免费下载网站?
济南专业网站制作公司,济南信息工程学校怎么样?
h5网站制作工具有哪些,h5页面制作工具有哪些?
建站之星导航菜单设置与功能模块配置全攻略
C#怎么创建控制台应用 C# Console App项目创建方法
如何在香港服务器上快速搭建免备案网站?
如何做网站制作流程,*游戏网站怎么搭建?
制作网站的基本流程,设计网站的软件是什么?
建站之星安装后界面空白如何解决?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
如何通过宝塔面板实现本地网站访问?
建站之星伪静态规则如何正确配置?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
如何在Ubuntu系统下快速搭建WordPress个人网站?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
制作旅游网站html,怎样注册旅游网站?
高防服务器租用指南:配置选择与快速部署攻略
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
建站主机如何安装配置?新手必看操作指南
建站之星图片链接生成指南:自助建站与智能设计教程
如何快速打造个性化非模板自助建站?
重庆市网站制作公司,重庆招聘网站哪个好?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
红河网站制作公司,红河事业单位身份证如何上传?
视频网站制作教程,怎么样制作优酷网的小视频?
在线制作视频的网站有哪些,电脑如何制作视频短片?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
如何在橙子建站中快速调整背景颜色?
,有什么在线背英语单词效率比较高的网站?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
定制建站流程解析:需求评估与SEO优化功能开发指南
*请认真填写需求信息,我们会在24小时内与您取得联系。