Winform自定义控件C#

一、生成自定义控件DLL形式在其他项目中调用


1.创建自定义控件

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

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

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

控件如下:

 pictureBox1:命名为picBox

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

 button1:命名为btnOpen

 代码如下:


  
  
  1. private void btnOpen_Click(object sender, EventArgs e)
  2. {
  3. OpenFileDialog ofdPic = new OpenFileDialog();
  4. ofdPic.Filter = "JPG(*.JPG;*.JPEG);gif文件(*.GIF);PNG(*.PNG)|*.jpg;*.jpeg;*.gif;*.png";
  5. ofdPic.FilterIndex = 1;
  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 / 1024;
  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 > 400)
  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. }

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

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

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

3.自定义控件测试

新建windows窗体应用程序

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

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

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

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

测试结果:

二、C#在同一个项目下创建Winform自定义控件
1、点击项目-》添加-》新建项-》用户控件
在这里插入图片描述
新建如test的自定义控件
2、对自定义控件进行相应编辑
3、编译、关闭test设计器,关闭再打开工具箱,工具箱中就会自动出现自定义的控件。

发布了14 篇原创文章 · 获赞 5 · 访问量 6021

猜你喜欢

转载自blog.csdn.net/weixin_43277501/article/details/104408065