本文实例中的自定义类PictureBox继承于UserControl,最终实现简单的分屏功能。分享给大家供大家参考之用。具体实现代码如下:

  1. public partial class PictureControl : UserControl
  2. {
  3. public event MouseEventHandler PicControl_DoubleClick;
  4. private int picNum;
  5. /// <summary>
  6. /// 屏幕个数
  7. /// </summary>
  8. public int PicNum
  9. {
  10. get { return picNum; }
  11. set
  12. {
  13. if (value == || value == || value == || value == || value == || value == || value == )//只能
  14.  
  15. 4、、、、、、
  16. {
  17. picNum = value;
  18. this.SetPictureBox(this.picNum);
  19. }
  20. else
  21. {
  22. this.PicNum = ;
  23. this.SetPictureBox(this.picNum);
  24. }
  25. }
  26. }
  27.  
  28. public PictureControl()
  29. {
  30. this.picNum = ;
  31. InitializeComponent();
  32. this.SetPictureBox(this.picNum);
  33. }
  34.  
  35. /// <summary>
  36. /// 根据个数布局PictureBox
  37. /// </summary>
  38. /// <param name="num"></param>
  39. private void SetPictureBox(int num)
  40. {
  41. this.Controls.Clear();
  42. Size size = this.Size;
  43. switch (num)
  44. {
  45. case : this.SetPictureBox(, , size); break;
  46. case : this.SetPictureBox(, , size); break;
  47. case : this.SetPictureBox(, , size); break;
  48. case : this.SetPictureBox(, , size); break;
  49. case : this.SetPictureBox(, , size); break;
  50. case : this.SetPictureBox(, , size); break;
  51. case : this.SetPictureBox(, , size); break;
  52. }
  53. }
  54.  
  55. /// <summary>
  56. /// 布局pictureBox
  57. /// </summary>
  58. /// <param name="x">几行</param>
  59. /// <param name="y">几列</param>
  60. /// <param name="size">当前控件的大小</param>
  61. private void SetPictureBox(int x, int y,Size size)
  62. {
  63. int num = ;
  64. for (int i = ; i < x; i++)
  65. {
  66. for (int j = ; j < y; j++)
  67. {
  68. PictureBox pic = new PictureBox();
  69. pic.SizeMode = PictureBoxSizeMode.Zoom; //设置自动缩放
  70. pic.BackColor = Color.White; //设置背景颜色
  71. pic.Location = new Point((size.Width / y) * j, (size.Height / x) * i); //设置Location
  72. pic.BorderStyle = BorderStyle.FixedSingle; //设置边框
  73. pic.MouseDoubleClick += new MouseEventHandler(pic_MouseDoubleClick); //订阅控件双击事件
  74. pic.Size = new Size(size.Width / y, size.Height / x); //设置控件大小
  75. pic.Tag = num; //设定控件编号即屏幕序号
  76. this.Controls.Add(pic); //添加
  77. num++;
  78. }
  79. }
  80. }
  81. void pic_MouseDoubleClick(object sender, MouseEventArgs e)
  82. {
  83. if (this.PicControl_DoubleClick != null)
  84. {
  85. this.PicControl_DoubleClick(sender, e);//将动态添加的控件的双击事件 传向控件体外。
  86. }
  87. }
  88. private void PictureControl_SizeChanged(object sender, EventArgs e)
  89. {
  90. this.SetPictureBox(this.picNum);
  91. }
  92. private PictureBox GetPicByIndex(int index)
  93. {
  94. foreach (Control c in this.Controls)
  95. {
  96. if (Convert.ToInt32(c.Tag) == index)
  97. {
  98. return (PictureBox)c;
  99. }
  100. }
  101. PictureBox p = new PictureBox();
  102. p.Tag = -;
  103. return p;
  104. }
  105. /// <summary>
  106. /// 根据屏幕序号设置图像
  107. /// </summary>
  108. /// <param name="index">屏幕号</param>
  109. /// <param name="img">图像</param>
  110. public void SetImageByIndex(int index, Image img)
  111. {
  112. GetPicByIndex(index).Image = img;
  113. }
  114. }

C#分屏控件用法实例的更多相关文章

  1. [深入浅出Windows 10]分屏控件(SplitView)

    4.18 分屏控件(SplitView) 分屏控件(SplitView)是Windows 10新增的控件类型,也是Windows 10通用应用程序主推的交互控件,通常和一个汉堡按钮搭配作为一种抽屉式菜 ...

  2. Jquery + css 日期控件用法实例.zip

    /*==============================================================================** Filename:common.j ...

  3. 关于Datagridview控件用法的一些总结(设置列chicun)

    1. 关于Datagridview控件用法的一些总结:http://www.cnblogs.com/mingjiatang/p/4968049.html

  4. IOS开发之XCode学习013:步进器和分栏控件

    此文学习来源为:http://study.163.com/course/introduction/1002858003.htm 此工程文件实现功能:  1.定义UIStepper和UISegmente ...

  5. MFC中ComboBox控件用法

    MFC ComboBox 一.入门篇 ComboBox (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项 ...

  6. CustomValidator控件用法

    虽然大部分时间一直从事asp.net的开发,对于一些常用的asp.net服务器端验证控件及它们的组合使用比较熟悉,如:CompareValidator ——比较验证控件RangeValidator — ...

  7. Python Tkinter基础控件入门实例

    分享一个Python Tkinter基础控件用法的入门例子,包括窗口的显示.显示内置图片.弹出窗口.菜单等. 例子,Python Tkinter基础控件的用法 # -*- coding: utf-8 ...

  8. DevExpress XtraScheduler日程管理控件应用实例(2)-- 深入理解数据存储

    DevExpress年终击穿底价,单套授权低至67折!查看详情>>> 在上篇随笔<DevExpress XtraScheduler日程管理控件应用实例(1)-- 基本使用> ...

  9. MFC按钮、列表控件应用实例(一)

    需求:实现张三.李四.王五 3 人的课程选择,并将选课结果提交到列表框中显示. 实现过程: 1.建立对话框mfc工程. 2.添加控件 tab 顺序 控 件 类 型 控件 ID1 Button IDC_ ...

随机推荐

  1. 关于Windows Azure 地缘组(Affinity Groups)

    最近在和一些客户和朋友的沟通中,发现Windows Azure地缘组概念很少有了解.我的建议是使用地缘组来优化同一区域内的网络访问速度.如果我的说法有误,欢迎大家指正. 关于“地缘组”的概念(摘自MS ...

  2. LightOJ 1370 - Bi-shoe and Phi-shoe (欧拉函数思想)

    http://lightoj.com/volume_showproblem.php?problem=1370 Bi-shoe and Phi-shoe Time Limit:2000MS     Me ...

  3. [转]前景检测算法--ViBe算法

    原文:http://blog.csdn.net/zouxy09/article/details/9622285 转自:http://blog.csdn.net/app_12062011/article ...

  4. HDU1151Air Raid(二分图的最大匹配)

    题目大意: 有一个城镇,它的所有街道都是单行的,并且每条街道都是和两个路口相连.同时已知街道不会形成回路. 你的任务是编写程序求最小数量的伞兵,这些伞兵可以访问(visit)所有的路口.

  5. button 禁止

    1.按钮的id为btnzhuce==> 控制按钮为禁用:  $("#btnzhuce").attr({"disabled":"disabled& ...

  6. Android系统默认设置

    修改Settings源码,可修改系统设置项,Settings数据被存放于com.android.providers.settings/databases/settings.db中,如果想修改系统启动后 ...

  7. myeclipse 8.6安装freemarker插件

    1. 打开http://sourceforge.net/projects/freemarker-ide/files/ 下载插件.2. 将其解压,将hudson.freemarker_ide_0.9.1 ...

  8. 彻底解决cookie欺骗(有问题)

    不要在公共场登陆 自己重要的用户名和密码: 不用的时候,[关闭浏览器],只点[退出],还是会有安全隐患.--没有绝对的安全由于http的无状态性,总不能每次访问页面都要输入用户名和密码,所以为了保持状 ...

  9. [转]ViewPager onPageChangeListener总结

    android ViewPager滑动事件讲解 首先ViewPager在处理滑动事件的时候要用到OnPageChangeListener OnPageChangeListener这个接口需要实现三个方 ...

  10. Delphi Data Types

    http://docwiki.embarcadero.com/RADStudio/XE6/en/Delphi_Data_Types Integer Data Types Type Descriptio ...