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

public partial class PictureControl : UserControl
{
public event MouseEventHandler PicControl_DoubleClick;
private int picNum;
/// <summary>
/// 屏幕个数
/// </summary>
public int PicNum
{
get { return picNum; }
set
{
if (value == || value == || value == || value == || value == || value == || value == )//只能 是4、、、、、、
{
picNum = value;
this.SetPictureBox(this.picNum);
}
else
{
this.PicNum = ;
this.SetPictureBox(this.picNum);
}
}
} public PictureControl()
{
this.picNum = ;
InitializeComponent();
this.SetPictureBox(this.picNum);
} /// <summary>
/// 根据个数布局PictureBox
/// </summary>
/// <param name="num"></param>
private void SetPictureBox(int num)
{
this.Controls.Clear();
Size size = this.Size;
switch (num)
{
case : this.SetPictureBox(, , size); break;
case : this.SetPictureBox(, , size); break;
case : this.SetPictureBox(, , size); break;
case : this.SetPictureBox(, , size); break;
case : this.SetPictureBox(, , size); break;
case : this.SetPictureBox(, , size); break;
case : this.SetPictureBox(, , size); break;
}
} /// <summary>
/// 布局pictureBox
/// </summary>
/// <param name="x">几行</param>
/// <param name="y">几列</param>
/// <param name="size">当前控件的大小</param>
private void SetPictureBox(int x, int y,Size size)
{
int num = ;
for (int i = ; i < x; i++)
{
for (int j = ; j < y; j++)
{
PictureBox pic = new PictureBox();
pic.SizeMode = PictureBoxSizeMode.Zoom; //设置自动缩放
pic.BackColor = Color.White; //设置背景颜色
pic.Location = new Point((size.Width / y) * j, (size.Height / x) * i); //设置Location
pic.BorderStyle = BorderStyle.FixedSingle; //设置边框
pic.MouseDoubleClick += new MouseEventHandler(pic_MouseDoubleClick); //订阅控件双击事件
pic.Size = new Size(size.Width / y, size.Height / x); //设置控件大小
pic.Tag = num; //设定控件编号即屏幕序号
this.Controls.Add(pic); //添加
num++;
}
}
}
void pic_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (this.PicControl_DoubleClick != null)
{
this.PicControl_DoubleClick(sender, e);//将动态添加的控件的双击事件 传向控件体外。
}
}
private void PictureControl_SizeChanged(object sender, EventArgs e)
{
this.SetPictureBox(this.picNum);
}
private PictureBox GetPicByIndex(int index)
{
foreach (Control c in this.Controls)
{
if (Convert.ToInt32(c.Tag) == index)
{
return (PictureBox)c;
}
}
PictureBox p = new PictureBox();
p.Tag = -;
return p;
}
/// <summary>
/// 根据屏幕序号设置图像
/// </summary>
/// <param name="index">屏幕号</param>
/// <param name="img">图像</param>
public void SetImageByIndex(int index, Image img)
{
GetPicByIndex(index).Image = img;
}
}

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. 基于Storm 分布式BP神经网络,将神经网络做成实时分布式架构

    将神经网络做成实时分布式架构: Storm 分布式BP神经网络:    http://bbs.csdn.net/topics/390717623 流式大数据处理的三种框架:Storm,Spark和Sa ...

  2. samba服务设置,Linux系统和Windows文件共享

    samba是一个工具套件,在Unix上实现SMB(Server Message Block)协议,或者称之为NETBIOS/LanManager协议.SMB协议通常是被windows系列用来实现磁盘和 ...

  3. HashSet与HashMap、Hashtable

    (最近在老师叫我们用java去实现LRU算法,了解到要用双链表去做,要用到LinkHashMap去做,但自己对java的几大集合框架并不熟悉,在学习过程了解到了HashMap和HashSet,做个简单 ...

  4. [iOS微博项目 - 3.4] - 获取用户信息

    github: https://github.com/hellovoidworld/HVWWeibo   A.获取用户信息 1.需求 获取用户信息并储存 把用户昵称显示在“首页”界面导航栏的标题上   ...

  5. easyui反选全选和全不选代码以及方法的使用

    首先要说明的是,onclick="javascript:这里能写方法的名字,也能写一段JS的代码,但是方法名字要带括号.",其次就是onclick=“这里写的方法名必须存在于本页面 ...

  6. RPG JS:免费开源的跨平台RPG游戏引擎

    RPG JS是一个2D RPG游戏制作引擎,目前版本基于Ease|JS游戏引擎,基于Canvas Engine的新版本即将发布. RPG JS是免费且开源的. RPG JS有着完善的文档支持. RPG ...

  7. oracle 空值与 null

    Oracle中的空字符串基本上是被当成空NULL来处理的,我们可以从下面的得到印证. select nvl('','NULL') from dual          返回 'NULL' select ...

  8. 学习JQuery中文文档之map()函数和get()函数

    今天学到一个新的函数map(). map(callback) 官方概述: 将一组元素转换成其他数组(不论是否是元素数组) 你可以用这个函数来建立一个列表,不论是值.属性还是CSS样式,或者其他特别形式 ...

  9. python基于http协议编程:httplib,urllib和urllib2<转>

    httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现. httplib.HTTPConnecti ...

  10. ArcGIS Desktop 10.0 直连 ArcSDE 10.2

    环境 客户端:win7 64位 sp1,oracle11.2 32位客户端,ArcGIS Desktop 10.0 服务端:win7 64位 sp1,oracle11.2 64位服务端,ArcSDE ...