C# Winform多屏幕多显示器编程技巧实例

投稿:junjie

这篇文章主要介绍了C# Winform多屏幕多显示器编程技巧实例,本文直接给出代码实例,需要的朋友可以参考下

在窗口的中间有一个System.Windows.Forms.PictureBox控件(该控件区域的面积为所在窗口的1/4),当该控件的大部分区域落在其中一台显示器时,在另一台显示器将不显示该控件,(该PictureBox控件将移动到主显示器所在的窗口区域)。

实现方法:

using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace WindowsApplication12 /// <summary> /// Summary description for Form1. /// </summary> public class Form1 : System.Windows.Forms.Form private int tmpx = 0; private int tmpy = 0; private System.Windows.Forms.PictureBox pictureBox1; /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.Container components = null; System.Drawing.Rectangle[] ScreensRect; public Form1() // Required for Windows Form Designer support InitializeComponent(); // TODO: Add any constructor code after InitializeComponent call /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) if( disposing ) if (components != null) components.Dispose(); base.Dispose( disposing ); #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.SuspendLayout(); // pictureBox1 this.pictureBox1.BackColor = System.Drawing.SystemColors.HotTrack; this.pictureBox1.Location = new System.Drawing.Point(120, 88); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(248, 176); this.pictureBox1.TabIndex = 0; this.pictureBox1.TabStop = false; // Form1 this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(504, 357); this.Controls.Add(this.pictureBox1); this.Name = "Form1"; this.Text = "Form1"; this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown); this.Load += new System.EventHandler(this.Form1_Load); this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseUp); this.ResumeLayout(false); #endregion /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() Application.Run(new Form1()); private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) this.tmpx = e.X; this.tmpy = e.Y; this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.form1_MouseMove); private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) this.MouseMove -= new System.Windows.Forms.MouseEventHandler(this.form1_MouseMove); System.Drawing.Rectangle pictureBox1Rect=Screen.GetWorkingArea(pictureBox1); for(int i=0;i<ScreensRect.Length;i++) if(ScreensRect[i].X==pictureBox1Rect.X && ScreensRect[i].Y==pictureBox1Rect.Y) this.Location=new Point(ScreensRect[i].X,pictureBox1Rect.Y); //MessageBox.Show(" WorkingArea:" + re.ToString()); private void form1_MouseMove(object sender, MouseEventArgs e) this.Location = new System.Drawing.Point(this.Location.X + e.X - this.tmpx, this.Location.Y + e.Y - this.tmpy); private void Form1_Load(object sender, System.EventArgs e) Screen[] s=Screen.AllScreens; ScreensRect=new Rectangle[s.Length]; for(int i=0;i<s.Length;i++) ScreensRect[i]= s[i].WorkingArea;
  • Unity 制作一个分数统计系统
    Unity 制作一个分数统计系统
    2021-10-10
  • C# StackExchange.Redis 用法汇总
    C# StackExchange.Redis 用法汇总
    2021-10-10
  • 基于C#实现端口扫描器(单线程和多线程)
    基于C#实现端口扫描器(单线程和多线程)
    2021-10-10
  • C# Quartzs定时器的使用教程
    C# Quartzs定时器的使用教程
    2021-10-10
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2024 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号