C# 自定义用户控件

此处为转载文章,用于记录自我学习过程,原文链接地址http://blog.csdn.net/xiongxuanwen/article/details/2605109

上篇:控件制作
 
本例是制作一个简单的自定义控件,然后用一个简单的测试程序,对于初学者来说,本例子比较简单,只能起到抛石引玉的效果。
我也是在学习当中,今后会将自己所学的逐步写出来和大家交流共享。
 
第一步:新建一个控件库项目:myControl
 
第二步:从工具箱里面拖动1个PictureBox、1个Button、6个Lable控件到用户界面上,布局如下:
       如上图,设置pictureBox的Name为picBox,背景为白色,Button的Name为btnOpen,另外靠左的三个Lable的Text属性分别为:文件名称,文件大小,文件尺寸,靠右的三个Lable的Name分别为:lblName, lblLength, lblSize.
 
第三步:添加处理程序代码
在btnOpen的Click事件写入代码,打开一个打开文件对话框,选择一个图形文件,打开并将它显示在picBox上。

  1. private void btnOpen_Click(object sender, EventArgs e)
  2. {
  3. OpenFileDialog ofdPic = new OpenFileDialog();
  4. ofdPic.Filter = "JPG(*.JPG;*.JPEG);gif文件(*.GIF)|*.jpg;*.jpeg;*.gif";
  5. ofdPic.FilterIndex = ;
  6. ofdPic.RestoreDirectory = true;
  7. ofdPic.FileName = "";
  8. if (ofdPic.ShowDialog() == DialogResult.OK)
  9. {
  10. string sPicPaht = ofdPic.FileName.ToString();
  11. FileInfo fiPicInfo = new FileInfo(sPicPaht);
  12. long lPicLong = fiPicInfo.Length / ;
  13. string sPicName = fiPicInfo.Name;
  14. string sPicDirectory = fiPicInfo.Directory.ToString();
  15. string sPicDirectoryPath = fiPicInfo.DirectoryName;
  16. Bitmap bmPic = new Bitmap(sPicPaht);
  17. if (lPicLong > )
  18. {
  19. MessageBox.Show("此文件大小為" + lPicLong + "K;已超過最大限制的K范圍!");
  20. }
  21. else
  22. {
  23. Point ptLoction = new Point(bmPic.Size);
  24. if (ptLoction.X > picBox.Size.Width || ptLoction.Y > picBox.Size.Height)
  25. {
  26. picBox.SizeMode = PictureBoxSizeMode.Zoom;
  27. }
  28. else
  29. {
  30. picBox.SizeMode = PictureBoxSizeMode.CenterImage;
  31. }
  32. }
  33. picBox.LoadAsync(sPicPaht);
  34. lblName.Text = sPicName;
  35. lblLength.Text = lPicLong.ToString() + " KB";
  36. lblSize.Text = bmPic.Size.Width.ToString() + "×" + bmPic.Size.Height.ToString();
  37. }
  38. }
 
第四步:测试控件
按F5启动调试,弹出如下窗体:
单击“打开”按钮,弹出打开文件对话框:
选择一张图片,单击“打开”,可以看到在picBox上显示了打开的图片:
第五步:查看成生的控件文件,到该项目文件目录下的bin->debug中可找到。
 
下篇:控件测试
第一步:新建一个C# Windows 应用程序,名为TestMyButton.
 
第二步:增加自定义的用户控件
右键单击工具箱中任意一个控件,弹出右键菜单如下:
单击“选择项”,弹出如下对话框:
单击“浏览”,弹出打开对话框:
选中控件文件 mybutton.dll ,单击“打开”按钮,回到自定义工具箱,系统会默认把你刚才选中的控件打上 勾。
返回vs编辑器,可看到工具箱中多出了一个UserControl:
 
第三步:拖动1个自定义的控件到测试窗口
第四步 测试程序
单击“打开”按钮:
选择一个图片,打开,显示该图:
测试成功。

C# 自定义控件制作和使用实例(winform)的更多相关文章

  1. C# 自定义控件制作和使用实例(winform)(转)

    本例是制作一个简单的自定义控件,然后用一个简单的测试程序,对于初学者来说,本例子比较简单,只能起到抛石引玉的效果. 我也是在学习当中,今后会将自己所学的逐步写出来和大家交流共享.   第一步:新建一个 ...

  2. php+lottery.js制作九宫格抽奖实例

    php+lottery.js制作九宫格抽奖实例,本抽奖功能效果表现好,定制方便简单,新手学习跟直接拿来用都非常不错,兼容IE.火狐.谷歌等浏览器. 引入抽奖插件lottery.js <scrip ...

  3. 单实例 winform zz

    (引用了 Microsoft.VisualBasic.ApplicationServices)SingleInstanceApplicationWrapper.cs using System.Wind ...

  4. 3ds Max制作客厅场景实例教程

    附件系列 (图01) 让我们回顾一下场景:一个房间包括下列一件件家具, 在中间的一张小桌子,在房间的角落的一个小桌子,有一个垃圾桶和一个带镜子的边桌,有一个烛台.还有一个挂钟,窗帘,沙发和带手臂的椅子 ...

  5. 原生js拖拽功能制作滑动条实例教程

    拖拽属于前端常见的功能,很多效果都会用到js的拖拽功能.滑动条的核心功能也就是使用js拖拽滑块来修改位置.一个完整的滑动条包括 滑动条.滑动痕迹.滑块.文本 等元素,先把html代码写出来,如下所示: ...

  6. AE-分享<学习后,制作的视频实例>小视频-与大家交流!

  7. c#Winform自定义控件-目录

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...

  8. winform 自定义控件(高手)

    高手推荐:https://www.cnblogs.com/bfyx/p/11364884.html   c#Winform自定义控件-目录   前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件 ...

  9. winform界面特效470多例

    一共470多例winform 界面特效的源码. 实例030 窗口颜色的渐变 实例说明 在程序设计时,可以通过设置窗体的BackColor属性来改变窗口的背景颜色.但是这个属性改变后整个窗体的客户区都会 ...

随机推荐

  1. C++中四种类型转换方式

    类型转换有c风格的,当然还有c++风格的.c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比 ...

  2. div 背景色设置_DIV背景颜色设置

    DIV 背景色设置篇-div背景颜色设置篇 一.div标签内直接设置背景颜色   -   TOP <div style="background:#000; color:#FFF&quo ...

  3. Android Studio启动时Fetching android sdk component information超时的解决方案

    1)进入刚安装的Android Studio目录下的bin目录.找到idea.properties文件,用文本编辑器打开. 2)在idea.properties文件末尾添加一行: disable.an ...

  4. IP分片和TCP分片 MTU和MSS(转)

    IP分片和TCP分片 MTU和MSS(转) 访问原文:http://blog.csdn.net/keyouan2008/article/details/5843388 1,MTU(Maximum Tr ...

  5. Fragment 常见问题

    1. 因为Fragment是在3.0提出的,为了兼容低版本,需要引入一个android-support-v4.jar 2. 需要实例化的activity必须 extends FragmentActiv ...

  6. Solr 多核(MultiCore)配置

    Solr Multicore意义        Solr Multicore 是 solr 1.3 的新特性.其目的一个solr实例,可以有多个搜索应用.< xmlnamespace prefi ...

  7. lambda -- Java 8 find first element by predicate

        Java 8 find first element by predicate up vote6down votefavorite I've just started playing with ...

  8. WIA设备批量扫描

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. JPA入门例子(采用JPA的hibernate实现版本) 转

    JPA入门例子(采用JPA的hibernate实现版本) jpahibernate数据库jdbcjava框架(1).JPA介绍: JPA全称为Java Persistence API ,Java持久化 ...

  10. 用Delphi 实现WebService 转

    一编写服务程序 第一步:File----->New----->Other------>WebServices----->Soap Server Application 选择IS ...