詳解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è)顯示器上展示信息。希望通過本文的簡(jiǎn)單案例能擴(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-11C#實(shí)現(xiàn)嵌套循環(huán)的示例代碼
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)嵌套循環(huán)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09C# .NET中Socket簡(jiǎn)單實(shí)用框架的使用教程
最近一個(gè)項(xiàng)目因?yàn)橐玫絊ocket傳輸問題,所以決定學(xué)習(xí)一下,將自己學(xué)習(xí)的內(nèi)容總結(jié)分享出來,下面這篇文章主要給大家介紹了關(guān)于C# .NET中Socket簡(jiǎn)單實(shí)用框架使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2017-09-09C#實(shí)現(xiàn)泛型List分組輸出元素的方法
這篇文章主要介紹了C#實(shí)現(xiàn)泛型List分組輸出元素的方法,涉及C#針對(duì)List的遍歷、排序、輸出等相關(guān)操作技巧,需要的朋友可以參考下2017-12-12C#實(shí)現(xiàn)合并多張圖片為GIF動(dòng)態(tài)圖
這篇文章主要為大家詳細(xì)介紹了C#如何將把一張又一張的圖片去拼合成一張GIF動(dòng)態(tài)圖片,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-12-12C#實(shí)現(xiàn)寫入文本文件內(nèi)容的方法
這篇文章主要介紹了C#實(shí)現(xiàn)寫入文本文件內(nèi)容的方法,涉及C#針對(duì)文本文件的判斷、創(chuàng)建及寫入等相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07Unity 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