C#分屏控件用法实例
本文实例中的自定义类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#分屏控件用法实例的更多相关文章
- [深入浅出Windows 10]分屏控件(SplitView)
4.18 分屏控件(SplitView) 分屏控件(SplitView)是Windows 10新增的控件类型,也是Windows 10通用应用程序主推的交互控件,通常和一个汉堡按钮搭配作为一种抽屉式菜 ...
- Jquery + css 日期控件用法实例.zip
/*==============================================================================** Filename:common.j ...
- 关于Datagridview控件用法的一些总结(设置列chicun)
1. 关于Datagridview控件用法的一些总结:http://www.cnblogs.com/mingjiatang/p/4968049.html
- IOS开发之XCode学习013:步进器和分栏控件
此文学习来源为:http://study.163.com/course/introduction/1002858003.htm 此工程文件实现功能: 1.定义UIStepper和UISegmente ...
- MFC中ComboBox控件用法
MFC ComboBox 一.入门篇 ComboBox (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项 ...
- CustomValidator控件用法
虽然大部分时间一直从事asp.net的开发,对于一些常用的asp.net服务器端验证控件及它们的组合使用比较熟悉,如:CompareValidator ——比较验证控件RangeValidator — ...
- Python Tkinter基础控件入门实例
分享一个Python Tkinter基础控件用法的入门例子,包括窗口的显示.显示内置图片.弹出窗口.菜单等. 例子,Python Tkinter基础控件的用法 # -*- coding: utf-8 ...
- DevExpress XtraScheduler日程管理控件应用实例(2)-- 深入理解数据存储
DevExpress年终击穿底价,单套授权低至67折!查看详情>>> 在上篇随笔<DevExpress XtraScheduler日程管理控件应用实例(1)-- 基本使用> ...
- MFC按钮、列表控件应用实例(一)
需求:实现张三.李四.王五 3 人的课程选择,并将选课结果提交到列表框中显示. 实现过程: 1.建立对话框mfc工程. 2.添加控件 tab 顺序 控 件 类 型 控件 ID1 Button IDC_ ...
随机推荐
- 第二百二十三天 how can I 坚持
今天双十一,过得有点郁闷,昨天鱼死了不说,抢的羽绒服今天才发现是棉服,结果又买了个海澜之家的,搞的今天凌晨买的东西全都写退了,除了小米耳机. 光棍节,好纠结.爱要怎么说出口,你才不会拒绝啊,愁人啊. ...
- 如果Apache Spark集群中没有分布式系统,则会?
若当连接到Spark的master之后,若集群中没有分布式文件系统,Spark会在集群中每一台机器上加载数据,所以要确保Spark集群中每个节点上都有完整数据. 通常可以选择把数据放到HDFS.S3或 ...
- EntityFramwork6连接MySql错误
EntityFramwork6连接MySql错误 使用EF6连接MySql产生Exception: ProHub.ssdl(2,2) : 错误 0152: MySql.Data.MySqlClient ...
- C++11外部模板
[C++11之外部模板] 在标准C++中,只要在编译单元内遇到被完整定义的模板,编译器都必须将其实例化(instantiate).这会大大增加编译时间,特别是模板在许多编译单元内使用相同的参数实例化. ...
- SQL获取变量类型以及变量最大长度
DECLARE @Temp nvarchar(1050)='' SELECT CAST(SQL_VARIANT_PROPERTY(@Temp, 'BaseType') AS VARCHAR(50))S ...
- HDU 1787 GCD Again(欧拉函数,水题)
GCD Again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- Wicket Hello World Example
A simple hello world example in Wicket, show the basic structure of Wicket web application. Tools an ...
- SqlAgent备份脚本
) ) set @dbname='emcp' set @back_path= 'e:\'+@dbname+'\'+@dbname ),) )) )) )) +'.bak' exec('use ['+@ ...
- This is a sandbox of markdown
A First Level Header A Second Level Header Now is the time for all good men to come to the aid of th ...
- 最小生成树之Prime法
关于最小生成树的概念,在前一篇文章中已经讲到,就不在赘述了.下面介绍Prime算法: 其基本思想为:从一个顶点出发,选择由该顶点出发的最小权值边,并将该边的另一个顶点包含进来,然后找出 ...