最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C#應(yīng)用程序如何實現(xiàn)多屏顯示

 更新時間:2024年05月02日 08:06:17   作者:anlog  
這篇文章主要為大家詳細(xì)介紹了C#如何實現(xiàn)把主屏運行程序中多個窗體移動到各個擴(kuò)展屏幕位置顯示,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

前言

隨著業(yè)務(wù)發(fā)展,應(yīng)用程序在一些特定場景下,只在一個顯示器上展示信息已經(jīng)不能滿足用戶需求。我們?nèi)绾伟阎髌吝\行程序中多個窗體移動到各個擴(kuò)展屏幕位置顯示呢?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)用程序不同界面在多個顯示器上展示信息。希望通過本文的簡單案例能擴(kuò)展大家思路。

到此這篇關(guān)于詳解C#應(yīng)用程序如何實現(xiàn)多屏顯示的文章就介紹到這了,更多相關(guān)C#多屏顯示內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

大丰市| 察雅县| 吴堡县| 平谷区| 乌拉特前旗| 德化县| 高淳县| 郸城县| 荃湾区| 凤冈县| 称多县| 张家港市| 阿勒泰市| 长岛县| 都兰县| 阜城县| 分宜县| 上林县| 台江县| 林西县| 龙岩市| 东源县| 高唐县| 杭州市| 滦平县| 额敏县| 凉山| 阿图什市| 依兰县| 视频| 封丘县| 健康| 南丰县| 景东| 呼玛县| 天津市| 桂平市| 安新县| 南乐县| 德阳市| 佛教|