栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C#分屏控件用法实例

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#分屏控件用法实例

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

public partial class PictureControl : UserControl
{
    public event MouseEventHandler PicControl_DoubleClick;
    private int picNum;
    /// 
    /// 屏幕个数
    /// 
    public int PicNum
    {
      get { return picNum; }
      set
      {
 if (value == 4 || value == 6 || value == 9 || value == 12 || value == 16 || value == 20 || value == 25)//只能

是4、6、9、12、16、20、25
 {
   picNum = value;
   this.SetPictureBox(this.picNum);
 }
 else
 {
   this.PicNum = 12;
   this.SetPictureBox(this.picNum);
 }
      }
    }

    public PictureControl()
    {
      this.picNum = 4;
      InitializeComponent();
      this.SetPictureBox(this.picNum);
    }

    /// 
    /// 根据个数布局PictureBox
    /// 
    /// 
    private void SetPictureBox(int num)
    {
      this.Controls.Clear();
      Size size = this.Size;
      switch (num)
      {
 case 4: this.SetPictureBox(2, 2, size); break;
 case 6: this.SetPictureBox(2, 3, size); break;
 case 9: this.SetPictureBox(3, 3, size); break;
 case 12: this.SetPictureBox(3, 4, size); break;
 case 16: this.SetPictureBox(4, 4, size); break;
 case 20: this.SetPictureBox(4, 5, size); break;
 case 25: this.SetPictureBox(5, 5, size); break;
      }
    }

    /// 
    /// 布局pictureBox
    /// 
    /// 几行
    /// 几列
    /// 当前控件的大小
    private void SetPictureBox(int x, int y,Size size)
    {
      int num = 0;
      for (int i = 0; i < x; i++)
      {
 for (int j = 0; 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 = -1;
      return p;
    }
    /// 
    /// 根据屏幕序号设置图像
    /// 
    /// 屏幕号
    /// 图像
    public void SetImageByIndex(int index, Image img)
    {
      GetPicByIndex(index).Image = img;
    }
}

希望本文所述实例对大家C#程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/126136.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号