写在前面:

个人网站:https://chenqi.autmake.com/

C#自定义控件的创建

在编程过程中,现有的c#控件远远不能满足我们的需要,这时候就需要我们自己来开发控件了。本人在开发自定义控件时走了一些弯路,写下此篇,希望能够给有需要的朋友一些帮助,也借此加深自己的印象。


1.创建自定义控件

选择【经典桌面】——【窗体控件库】

2.添加控件,组合成一个新的控件

自定义控件功能:打开一张图片,将图片展示在pictureBox控件中,并将图片的名称、大小、尺寸显示出来

控件如下:

pictureBox1:命名为picBox

label1~label6  :左边三个显示文字,右边三个命名为:lblName  lblLength  lblSize

button1:命名为btnOpen

代码如下:

 private void btnOpen_Click(object sender, EventArgs e){OpenFileDialog ofdPic = new OpenFileDialog();ofdPic.Filter = "JPG(*.JPG;*.JPEG);gif文件(*.GIF);PNG(*.PNG)|*.jpg;*.jpeg;*.gif;*.png";ofdPic.FilterIndex = 1;ofdPic.RestoreDirectory = true;ofdPic.FileName = "";if (ofdPic.ShowDialog() == DialogResult.OK){string sPicPaht = ofdPic.FileName.ToString();FileInfo fiPicInfo = new FileInfo(sPicPaht);long lPicLong = fiPicInfo.Length / 1024;string sPicName = fiPicInfo.Name;string sPicDirectory = fiPicInfo.Directory.ToString();string sPicDirectoryPath = fiPicInfo.DirectoryName;Bitmap bmPic = new Bitmap(sPicPaht);if (lPicLong > 400){MessageBox.Show("此文件大小為" + lPicLong + "K;已超過最大限制的K范圍!");}else{Point ptLoction = new Point(bmPic.Size);if (ptLoction.X > picBox.Size.Width || ptLoction.Y > picBox.Size.Height){picBox.SizeMode = PictureBoxSizeMode.Zoom;}else{picBox.SizeMode = PictureBoxSizeMode.CenterImage;}}picBox.LoadAsync(sPicPaht);lblName.Text = sPicName;lblLength.Text = lPicLong.ToString() + " KB";lblSize.Text = bmPic.Size.Width.ToString() + "×" + bmPic.Size.Height.ToString();}}

点击【解决方案】,右键弹出窗口,点击【生成解决方案】

至此,自定义控件的创建已经完成!

生成的控件路径在Debug文件夹下,dll文件

3.自定义控件测试

新建windows窗体应用程序

发现在左边的控件工具栏中并没有刚刚的自定义控件,不要急!!

选择工具下的【选择工具箱项】

浏览,选择dll文件路径,注意路径中不能包含中文字符,切记!否则会出错!

添加成功后,会发现工具箱中出现了刚刚定义的控件。

测试结果:

C#自定义控件的创建相关推荐

  1. [导入]Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载]...

    Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载] 文章来源:http://blog.csdn.net/chengking/archive/2007/0 ...

  2. 自定义控件 一 创建最简单的控件

    本来很早就应该写这篇文章了,但由于个人电脑坏了几个月了,这段时间又发生了很多事情,所以就耽搁了. 先开发一个最简单的Qt自定义控件,这个自定义的控件可以在QtCreator中拖放使用. 1.新建一个Q ...

  3. 【WinForm】创建自定义控件(转)

    转自:http://www.cnblogs.com/bomo/archive/2012/12/09/2810559.html 虽然VS为我们提供了很多控件可以使用,但有时候这些控件仍然不能满足我们的要 ...

  4. Android 第八课 创建自定义控件

    常用控件和布局的继承结构,如下图: (待续....) 所有的控件都是直接或间接继承自View的,所用的所有布局都是直接或间接继承自ViewGroup的,View是Android中最基本的一种UI组件, ...

  5. Qt自定义控件创建和使用

    Qt自定义控件创建和使用 Qt中很方便的是使用各种自定义控件来分模块实现各种子功能,用于实现代码的解耦: 之前在使用Qt 5.12创建自定义控件时,出现了各种问题,多次重装QtCreator和VS,屡 ...

  6. [转]利用ASP.NET 2.0创建自定义Web控件(1)

    原址:http://hi.baidu.com/sjbh/blog/item/cc58fd1bd35d3ad2ad6e7593.html   简介 从使用基本的文本编辑器到创作标记页面,Web 开发已经 ...

  7. Android自定义控件开发系列(零)——基础原理篇

    在后边的文章中发现在说Android自定义时,有时候要重复解释很多东西,所以想想返回来增加一篇"基础原理篇",直接进入正题吧-- 首先的问题是:在Android项目开发中,什么时候 ...

  8. 一步一步学Silverlight 2系列(10):使用用户控件

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  9. Asp.Net细节性问题技巧精萃(转载)

    1.<%=...%>与<%#... %>的区别:    答:<%=...%>是在程序执行时调用,<%#... %>是在DataBind()方法之后被调用 ...

最新文章

  1. 对于二叉树三种非递归遍历方式的理解
  2. WF4 持久化 第四篇
  3. 20145234黄斐《java程序设计》第六周
  4. Android 项目中常用到的第三方组件
  5. 从Boxee的Amie Street访问音乐
  6. PAT 1152 Google Recruitment (20 分)- 甲级
  7. Java核心类库篇8——网络编程
  8. python连载第七篇~python世界里的注释符号
  9. UI设计素材|如何为数据可视化选择更漂亮的颜色
  10. 在C#中使用Google翻译API
  11. 固态和机械硬盘组raid_联想G400拆机步骤(固态硬盘替换机械硬盘,机械硬盘替换光驱)...
  12. Lucene.Net
  13. Android中处理崩溃异常和分析日志的两种思路
  14. 让人头疼的吃鸡外挂,一起来逆向分析一波
  15. win10右键卡顿原因_win10右键新建卡顿怎么办
  16. 微服务调用链追踪中心搭建
  17. APP支付(微信、支付宝)
  18. git和github使用
  19. Spring Boot @DeleteMapping(转)
  20. 集合框架(一)——概述

热门文章

  1. QElapsedTimer 计时器
  2. 华为2020校招-软件题
  3. C++类继承时构造函数与析构函数的执行顺序
  4. Jimdo全球领先的500M免费自助建站
  5. VS2013 TeeChart_v5 MFC C++ 使用手册干货(二)TeeChart 实时数据图表
  6. Jenkins发版本
  7. only regular white space (\r, \n, \t) is allowed between tokens
  8. java--spring6基于注解的声明式事务
  9. python pandas excel 修改列_Python中Pandas读取修改excel操作攻略(代码示例)
  10. unity网络实战开发(丛林战争)-正式开发阶段(016-数据库设计以及登录处理)