C# winfrom 投屏显示窗体,可以显示在指定的屏幕,有多个屏幕都可以显示

本文介绍了一段C#代码,用于在指定的屏幕显示Winform窗体,支持多屏幕环境下窗体的精确定位与显示,包括窗体的大小调整和位置设置。

C# winfrom 投屏显示窗体,可以显示在指定的屏幕,有多个屏幕都可以显示

 

 

核心代码:

 public void FormStartScreen(int screen, Form form)
        {
            if (Screen.AllScreens.Length < screen)
            {
                MessageBox.Show("当前主机连接最多的屏幕是" + Screen.AllScreens.Length + " 个,不能投屏到第"+ screen + "个 屏幕!");
                return;
            }
            screen = screen-1;
            if (form==null)
            {
                form =new Form ();
            }
            form.StartPosition = FormStartPosition.CenterScreen;
            Screen s = Screen.AllScreens[screen];
            form.Location = new System.Drawing.Point(s.Bounds.X, s.Bounds.Y);
            //form.WindowState = FormWindowState.Maximized;
            form.Size = new Size(s.WorkingArea.Width, s.WorkingArea.Height);

            form.Show();
            form.BringToFront();
        }

下载地址:https://download.youkuaiyun.com/download/tanglingbo/11604802

C# WinForm 中实现两个窗体数据显示,可采用种方法,以下为详细介绍: ### 通过构造函数传递变量 定义带参数的构造函数,在创建新窗体实例时传递数据。例如,从 `Form1` 向 `Form2` 传递 `textBox1` 的文本内容。 ```csharp // Form1 代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Hide(); Form2 form = new Form2(textBox1.Text); form.ShowDialog(); Show(); } } // Form2 代码 public partial class Form2 : Form { public Form2(string data) { InitializeComponent(); // 假设 Form2 有一个 label 用于显示数据 label1.Text = data; } } ``` 这种方法简单直接,适合在创建窗体时就需要传递数据的场景 [^1][^2]。 ### 通过公共属性传递变量 在目标窗体中定义公共属性,在源窗体中设置该属性的值。 ```csharp // Form1 代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 form = new Form2(); form.DataToDisplay = textBox1.Text; form.ShowDialog(); } } // Form2 代码 public partial class Form2 : Form { public string DataToDisplay { get; set; } public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { // 假设 Form2 有一个 label 用于显示数据 label1.Text = DataToDisplay; } } ``` 这种方法灵活性较高,可在窗体创建后随时设置要显示的数据 [^1]。 ### 通过事件传递数据 在子窗体中定义事件,主窗体订阅该事件,当子窗体的数据发生变化时触发事件将数据传递给主窗体。 ```csharp // Form2 代码 public partial class Form2 : Form { public delegate void DataSentEventHandler(string data); public event DataSentEventHandler DataSent; public Form2() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (DataSent != null) { DataSent(textBox1.Text); } this.Close(); } } // Form1 代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 form = new Form2(); form.DataSent += Form2_DataSent; form.ShowDialog(); } private void Form2_DataSent(string data) { // 假设 Form1 有一个 label 用于显示数据 label1.Text = data; } } ``` 这种方法适用于子窗体向主窗体反馈信息的场景 [^1]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值