全网整合营销服务商

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

免费咨询热线: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#创建自定义控件的示例  # 自定义  # 重写  # 主要用于  # 自己的  # 这是  # 还可以  # 基础上  # 较高  # 所示  # 再把  # 大比拼  # 拖到  # 源代码  # 大家多多  # 如下图  # 新建一个  # 应用程序  # 再往  # 全由  # 几种方法 


相关文章: 如何实现建站之星域名转发设置?  公司网站设计制作厂家,怎么创建自己的一个网站?  建站之星各版本价格是多少?  如何通过IIS搭建网站并配置访问权限?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Python lxml的etree和ElementTree有什么区别  小型网站建站如何选择虚拟主机?  Swift开发中switch语句值绑定模式  如何快速搭建响应式可视化网站?  C#如何序列化对象为XML XmlSerializer用法  建站主机选购指南:核心配置优化与品牌推荐方案  C#怎么创建控制台应用 C# Console App项目创建方法  如何通过主机屋免费建站教程十分钟搭建网站?  建站之星免费模板:自助建站系统与智能响应式一键生成  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  ,在苏州找工作,上哪个网站比较好?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  如何解决ASP生成WAP建站中文乱码问题?  开心动漫网站制作软件下载,十分开心动画为何停播?  深圳网站制作案例,网页的相关名词有哪些?  建站之星安装路径如何正确选择及配置?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  如何基于云服务器快速搭建个人网站?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  定制建站如何定义?其核心优势是什么?  股票网站制作软件,网上股票怎么开户?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何在万网自助建站中设置域名及备案?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  制作网站怎么制作,*游戏网站怎么搭建?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  如何在腾讯云服务器上快速搭建个人网站?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  常州自助建站工具推荐:低成本搭建与模板选择技巧  建站之星如何实现PC+手机+微信网站五合一建站?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  建站之星客服服务时间及联系方式如何?  大型企业网站制作流程,做网站需要注册公司吗?  建站之星后台管理如何实现高效配置?  上海网站制作开发公司,上海买房比较好的网站有哪些?  建站VPS能否同时实现高效与安全翻墙?  网页设计与网站制作内容,怎样注册网站?  建站主机选虚拟主机还是云服务器更好?  制作网站的公司有哪些,做一个公司网站要多少钱? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。