詳解C#應(yīng)用程序如何實現(xiàn)多屏顯示
前言
隨著業(yè)務(wù)發(fā)展,應(yīng)用程序在一些特定場景下,只在一個顯示器上展示信息已經(jīng)不能滿足用戶需求。我們?nèi)绾伟阎髌吝\行程序中多個窗體移動到各個擴展屏幕位置顯示呢?C# 是通過什么方式來實現(xiàn)的,下面介紹 C# 使用 Screen 類的方式來實現(xiàn)。
詳細
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
{
//使用默認的事件處理委托,定義消息發(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

