全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C#自定义控件VS用户控件

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小时内与您取得联系。