詳解C#應(yīng)用程序如何實現(xiàn)多屏顯示
前言
隨著業(yè)務(wù)發(fā)展,應(yīng)用程序在一些特定場景下,只在一個顯示器上展示信息已經(jīng)不能滿足用戶需求。我們?nèi)绾伟阎髌吝\行程序中多個窗體移動到各個擴展屏幕位置顯示呢?C# 是通過什么方式來實現(xiàn)的,下面介紹 C# 使用 Screen 類的方式來實現(xiàn)。
詳細(xì)
Screen 是在 System.Windows.Forms 下的一個類,它表示單個系統(tǒng)上的一個或多個顯示設(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)用程序。
示例
本示例在第二個顯示屏同步顯示主屏掃描產(chǎn)品后顯該產(chǎn)品的圖片,方便操作人員更清晰的核對產(chǎn)品信息。示例也用多了C#事件知識點。
參數(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 ) { // 獲取第二個屏幕 Screen screen = screens[1]; secondForm.StartPosition = FormStartPosition.Manual; // 在 第二個屏幕 顯示第二個窗體 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類來實現(xiàn)桌面應(yīng)用程序不同界面在多個顯示器上展示信息。希望通過本文的簡單案例能擴展大家思路。
到此這篇關(guān)于詳解C#應(yīng)用程序如何實現(xiàn)多屏顯示的文章就介紹到這了,更多相關(guān)C#多屏顯示內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#使用正則表達式實現(xiàn)首字母轉(zhuǎn)大寫的方法
這篇文章主要介紹了C#使用正則表達式實現(xiàn)首字母轉(zhuǎn)大寫的方法,涉及C#基于正則表達式操作字符串的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11