詳解C#應(yīng)用程序如何實(shí)現(xiàn)多屏顯示
前言
隨著業(yè)務(wù)發(fā)展,應(yīng)用程序在一些特定場(chǎng)景下,只在一個(gè)顯示器上展示信息已經(jīng)不能滿足用戶需求。我們?nèi)绾伟阎髌吝\(yùn)行程序中多個(gè)窗體移動(dòng)到各個(gè)擴(kuò)展屏幕位置顯示呢?C# 是通過什么方式來實(shí)現(xiàn)的,下面介紹 C# 使用 Screen 類的方式來實(shí)現(xiàn)。
詳細(xì)
Screen 是在 System.Windows.Forms 下的一個(gè)類,它表示單個(gè)系統(tǒng)上的一個(gè)或多個(gè)顯示設(shè)備。
屬性
| 名稱 | 描述 |
|---|---|
| AllScreens | 獲取系統(tǒng)上所有顯示器 |
| Bounds | 獲取顯示的邊界 |
| Primary | 顯示是否為顯示器 |
| PrimaryScreen | 獲取主顯示器 |
| WorkingArea | 顯示器的工作區(qū) |
方法
下表是常用的一些方法:
| 名稱 | 描述 |
|---|---|
| FromControl(Control) | 檢索包含指定控件的最大部分的顯示器。 |
| GetBounds(Control) | 檢索包含指定控件的最大部分的顯示器的邊界。 |
| GetWorkingArea(Control) | 檢索包含指定控件的最大區(qū)域的顯示器工作區(qū)。 |
注意:Screen 只適用于.NET 4.8.1 以下或.NET 7 以上的Windows 桌面應(yīng)用程序。
示例
本示例在第二個(gè)顯示屏同步顯示主屏掃描產(chǎn)品后顯該產(chǎn)品的圖片,方便操作人員更清晰的核對(duì)產(chǎn)品信息。示例也用多了C#事件知識(shí)點(diǎn)。
參數(shù)用于傳遞信息
using System;
using System.Drawing;
namespace Fountain.WinForm.MultiMonitor
{
/// <summary>
/// 事件參數(shù)
/// </summary>
public class SyncEventArg : EventArgs
{
/// <summary>
/// 產(chǎn)品編碼
/// </summary>
public string ProductNo { get; set; }
/// <summary>
/// 產(chǎn)品圖片
/// </summary>
public Image ProductImage { get; set; }
}
}輔助顯示界面
using System;
using System.Windows.Forms;
namespace Fountain.WinForm.MultiMonitor
{
public partial class SecondForm : Form
{
public SecondForm()
{
InitializeComponent();
}
/// <summary>
/// 響應(yīng)事件處理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
internal void SysncTextChaned(object sender, EventArgs e)
{
try
{
//取到主窗體的傳來的文本
SyncEventArg arg = e as SyncEventArg;
this.LabelTrackingNo.Text = arg.ProductNo;
this.PictureBoxProduct.Image = arg.ProductImage;
}
catch
{
}
}
}
}程序主界面
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Fountain.WinForm.MultiMonitor
{
public partial class MainForm : Form
{
//使用默認(rèn)的事件處理委托,定義消息發(fā)布者事件
public event EventHandler SendMsgEvent;
/// <summary>
///
/// </summary>
public MainForm()
{
InitializeComponent();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MainForm_Load(object sender, EventArgs e)
{
try
{
SecondForm secondForm = new SecondForm();
// 事件的訂閱
SendMsgEvent += secondForm.SysncTextChaned;
// 獲取系統(tǒng)上所有顯示器
Screen[] screens = Screen.AllScreens;
// 判斷多屏
if (screens.Length >1 )
{
// 獲取第二個(gè)屏幕
Screen screen = screens[1];
secondForm.StartPosition = FormStartPosition.Manual;
// 在 第二個(gè)屏幕 顯示第二個(gè)窗體
secondForm.Location = screen.Bounds.Location;
}
// 顯示輔助界面
secondForm.Show();
}
catch
{
}
}
/// <summary>
/// 文本輸入框回車事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TextBoxProductNo_KeyDown(object sender, KeyEventArgs e)
{
try
{
if (e.KeyCode != Keys.Enter)
{
return;
}
if (string.IsNullOrEmpty(this.TextBoxProductNo.Text))
{
return;
}
Image image = Image.FromFile("P000001.png");
// 事件觸發(fā)通知
SendMsgEvent(this, new SyncEventArg() { ProductNo = this.TextBoxProductNo.Text, ProductImage = image });
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}小結(jié)
以上是使用C#中Screen類來實(shí)現(xiàn)桌面應(yīng)用程序不同界面在多個(gè)顯示器上展示信息。希望通過本文的簡單案例能擴(kuò)展大家思路。
到此這篇關(guān)于詳解C#應(yīng)用程序如何實(shí)現(xiàn)多屏顯示的文章就介紹到這了,更多相關(guān)C#多屏顯示內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#使用正則表達(dá)式實(shí)現(xiàn)首字母轉(zhuǎn)大寫的方法
這篇文章主要介紹了C#使用正則表達(dá)式實(shí)現(xiàn)首字母轉(zhuǎn)大寫的方法,涉及C#基于正則表達(dá)式操作字符串的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
C#實(shí)現(xiàn)嵌套循環(huán)的示例代碼
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)嵌套循環(huán)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09
C# .NET中Socket簡單實(shí)用框架的使用教程
最近一個(gè)項(xiàng)目因?yàn)橐玫絊ocket傳輸問題,所以決定學(xué)習(xí)一下,將自己學(xué)習(xí)的內(nèi)容總結(jié)分享出來,下面這篇文章主要給大家介紹了關(guān)于C# .NET中Socket簡單實(shí)用框架使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2017-09-09
C#實(shí)現(xiàn)泛型List分組輸出元素的方法
這篇文章主要介紹了C#實(shí)現(xiàn)泛型List分組輸出元素的方法,涉及C#針對(duì)List的遍歷、排序、輸出等相關(guān)操作技巧,需要的朋友可以參考下2017-12-12
C#實(shí)現(xiàn)合并多張圖片為GIF動(dòng)態(tài)圖
這篇文章主要為大家詳細(xì)介紹了C#如何將把一張又一張的圖片去拼合成一張GIF動(dòng)態(tài)圖片,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-12-12
C#實(shí)現(xiàn)寫入文本文件內(nèi)容的方法
這篇文章主要介紹了C#實(shí)現(xiàn)寫入文本文件內(nèi)容的方法,涉及C#針對(duì)文本文件的判斷、創(chuàng)建及寫入等相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
Unity shader實(shí)現(xiàn)頂點(diǎn)動(dòng)畫波動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Unity shader實(shí)現(xiàn)頂點(diǎn)動(dòng)畫波動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04

