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

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上。

private void btnOpen_Click(object sender, EventArgs e)
{
OpenFileDialog ofdPic = new OpenFileDialog();
ofdPic.Filter = "JPG(*.JPG;*.JPEG);gif文件(*.GIF)|*.jpg;*.jpeg;*.gif";
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();
}
}

第四步:测试控件

按F5启动调试,弹出如下窗体:

单击“打开”按钮,弹出打开文件对话框:

选择一张图片,单击“打开”,可以看到在picBox上显示了打开的图片:

第五步:查看成生的控件文件,到该项目文件目录下的bin->debug中可找到。

下篇:控件测试

第一步:新建一个C# Windows 应用程序,名为TestMyButton.

第二步:增加自定义的用户控件

右键单击工具箱中任意一个控件,弹出右键菜单如下:

单击“选择项”,弹出如下对话框:

单击“浏览”,弹出打开对话框:

选中控件文件 mybutton.dll ,单击“打开”按钮,回到自定义工具箱,系统会默认把你刚才选中的控件打上 勾。

返回vs编辑器,可看到工具箱中多出了一个UserControl:

第三步:拖动1个自定义的控件到测试窗口

第四步 测试程序

单击“打开”按钮:

选择一个图片,打开,显示该图:

测试成功。

时间: 2024-08-04 01:17:39

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

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

php+lottery.js制作九宫格抽奖实例,本抽奖功能效果表现好,定制方便简单,新手学习跟直接拿来用都非常不错,兼容IE.火狐.谷歌等浏览器. 引入抽奖插件lottery.js <script type="text/javascript" src="js/lottery.js"></script> 开始抽奖函数start_lottery() 1 function start_lottery(){ 2 if(flag){ 3 //alert

Jquery制作图片验证码实例-canvas 绘制

CSS .identify-code{ position: absolute; right: 6px; top: 50%; width: 118px; height: 40px; margin: -21px 0 0 0; } HTML <span id="code" class="identify-code"> <canvas class="show-captcha" id="canvas" style=&q

水晶报表制作甘特图实例

最近两周一直在用水晶报表做图表,像柱状图.折线图.甘特图.饼图等,原以为采用推模式用存储过程把数据推给图表就行了.但在实际操作过程中遇到了不少的细节问题. 1)图例标签文本 如图所示,默认情况下图例中的是 数据库的字段,如果是sum则是  数据库字段+"的和",这显然不是我们想要的,而且在vs集成版本里面这个标签文本是无法修改的. 如果是独立版本的话则可以在预览时点击相应的图例项然后编辑轴标签 但是如果采用推模式的话预览的时候没有数据看不到图表,也就无法进行设置了. 2)折线图线条的粗

node初学制作登录服务器实例

文件目录如下: user.html代码: <!DOCTYPE html><html><head> <meta charset="utf-8"/> <title></title></head><body> <p>用户名:<input type="text" id="user"></p> <p>密码:<

c#Winform自定义控件-目录

前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git 如果觉得写的还行,请点个 star 支持一下吧 欢迎前来交流探讨: 企鹅群568015492  ~~~持续增加中~~~~~ 自定义控件 (一)c#Winform自定义控件-基类控件 (二

C#实例.net_经典例子400个

一共470多例winform 界面特效的源码. 窗体与界面设计... 9 实例001  带历史信息的菜单    10 实例002  菜单动态合并    12 实例003  像开始菜单一样漂亮的菜单... 14 实例004  任务栏托盘菜单    15 实例005  可以拉伸的菜单界面    16 实例006  菜级联菜单    18 1.2  工具栏设计... 19 实例007  带带背景的工具栏    19 实例008  带浮动工具栏    20 实例009  在带下拉菜单的工具栏... 21

C#利用GDI+绘制旋转文字等效果实例

本文实例讲述了C#利用GDI+绘制旋转文字等效果的方法,是非常实用的技巧.分享给大家供大家参考之用.具体如下: C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经过不少的计算过程.利用下面的类可以实现该功能. 具体实现代码如下: using System; using System.Collections.Generic; using System

C#winform中调用wpf

原文:C#winform中调用wpf 在WinForm中是可以使用WPF中的控件(或者由WPF创建的自定义控件) 1.新建一个winform项目: 2.在解决方案上新建一个wpf项目: 如图: 如果有如下错误,就在winform中的引用添加System.xaml的引用即可: 错误 1 类型“System.Windows.Markup.IComponentConnector”在未被引用的程序集中定义.必须添加对程序集“System.Xaml, Version=4.0.0.0, Culture=ne

.net 综合面试题

想换工作的朋友可以试着做一下:1. CLR.CTS.CLS 分别是什么意思? 公共语言运行库,通用类型系统,公共语言规范2. 什么是基元类型? 由编译器直接支持的数据类型称为基元类型. 例如:C#中的int,string等等就是,实际运行过程中被映射为FCL中对应的类型(java中叫做包装类)如:System.Int32,System.String. ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_fxintro/html/7e4c5921-955d-4b