C#应用程序实现多屏显示

news2024/12/22 20:30:36

前言

随着业务发展,应用程序在一些特定场景下,只在一个显示器上展示信息已经不能满足用户需求。我们如何把主屏运行程序中多个窗体移动到各个扩展屏幕位置显示呢?C# 是通过什么方式来实现的,下面介绍 C# 使用 Screen 类的方式来实现。

详细

Screen 是在 System.Windows.Forms 下的一个类,它表示单个系统上的一个或多个显示设备。

属性
名称描述
AllScreens获取系统上所有显示器
Bounds获取显示的边界
Primary显示是否为显示器
PrimaryScreen获取主显示器
WorkingArea显示器的工作区
方法

   下表是常用的一些方法:

名称描述
FromControl(Control)检索包含指定控件的最大部分的显示器。
GetBounds(Control)检索包含指定控件的最大部分的显示器的边界。
GetWorkingArea(Control)检索包含指定控件的最大区域的显示器工作区。

注意:Screen 只适用于.NET 4.8.1 以下或.NET 7 以上的Windows 桌面应用程序。

示例

 本示例在第二个显示屏同步显示主屏扫描产品后显该产品的图片,方便操作人员更清晰的核对产品信息。示例也用多了C#事件知识点。

参数用于传递信息

using System;using System.Drawing;
namespace Fountain.WinForm.MultiMonitor{    /// <summary>    /// 事件参数    /// </summary>    public class SyncEventArg : EventArgs    {        /// <summary>        /// 产品编码        /// </summary>        public string ProductNo { get; set; }        /// <summary>        /// 产品图片        /// </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>        /// 响应事件处理        /// </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    {        //使用默认的事件处理委托,定义消息发布者事件        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;
                // 获取系统上所有显示器                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");                // 事件触发通知                SendMsgEvent(this, new SyncEventArg() { ProductNo = this.TextBoxProductNo.Text, ProductImage = image });            }            catch(Exception ex)            {                MessageBox.Show(ex.Message);            }        }    }}

小结

以上是使用C#中Screen类来实现桌面应用程序不同界面在多个显示器上展示信息。希望通过本文的简单案例能扩展大家思路。

C#应用程序实现多屏显示

C#应用程序实现多屏显示 (qq.com)icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzkzOTY0MTcyOA==&mid=2247483981&idx=1&sn=3bb547a47583bee0d0420e539c348746&chksm=c2ec9ca2f59b15b4023a3051febd41b1c768ea5b5059170a4d5db6f15f19816e79cd41485221&mpshare=1&scene=1&srcid=0419UmENkkKirdKfQOh18XL7&sharer_shareinfo=3a0e362623f889eb557575df8d44adb2&sharer_shareinfo_first=56afdc0edcb7c9b4f964803b58a44e49#rd特此记录

anlog

2024年4月24日

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1634599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

maven多模块创建-安装配置

1、前提 许久没有写文章了&#xff0c;荒废了2年多的时间&#xff0c;在整理的时候&#xff0c;发现Maven还差一篇安装配置的文章&#xff0c;现在开始提笔完善它&#xff0c;参考&#xff1a;https://blog.csdn.net/m0_72803119/article/details/134634164。 —写于2024年4月…

使用量排名前50的GPTs趋势和特征

Chatgpt的gpt商店已经有几千gpts了。目前哪些gpts比较受欢迎呢&#xff1f;有哪些趋势和投资呢? 根据whatplugin.ai&#xff08;截止日期为2024年3月&#xff09;&#xff0c;使用量最多的50个gpts数据分析结果如下&#xff1a; GPTs类型的分布情况如下&#xff1a; 图像生成…

智慧能源数据监控平台

随着科技的飞速发展&#xff0c;能源管理已逐渐从传统的粗放型向精细化、智能化转变。在这个转型过程中&#xff0c;HiWoo Cloud平台的智慧能源数据监控平台以其独特的技术优势和创新理念&#xff0c;正引领着能源管理的新潮流。 一、智慧能源数据监控平台的概念 智慧能源数据…

记录一次大数据量接口优化过程

问题描述 记录一次大数据量接口优化过程。最近在优化一个大数据量的接口&#xff0c;是提供给安卓端APP调用的&#xff0c;因为安卓端没做分批次获取&#xff0c;接口的数据量也比较大&#xff0c;因为加载速度超过一两分钟&#xff0c;所以导致接口超时的异常&#xff0c;要让…

【论文阅读】IPT:Pre-TrainedImageProcessingTransformer

Pre-TrainedImageProcessingTransformer 论文地址摘要1. 简介2.相关作品2.1。图像处理2.2。 Transformer 3. 图像处理3.1. IPT 架构3.2 在 ImageNet 上进行预训练 4. 实验4.1. 超分辨率4.2. Denoising 5. 结论与讨论 论文地址 1、论文地址 2、源码 摘要 随着现代硬件的计算能…

python数据可视化:雷达图

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 python数据可视化&#xff1a; 雷达图 选择题 关于以下代码输出的雷达图中&#xff0c;以下说法正确的是&#xff1f; import numpy as np import matplotlib.pyplot as plt from pylab impor…

【酱浦菌-爬虫项目】爬取学术堂宏观经济学论文原文

前言 首先给大家放出完整代码&#xff0c;然后下面就是用jupyter写的代码。实际上在写的时候用的是jupyter写的&#xff0c;因为感觉jupyter写的时候更加的流畅&#xff0c;每一步运行的细节都能保存下来&#xff0c;更方便学习理解。 完整代码&#xff1a; import os impo…

智能售货机:塑造未来零售新貌

智能售货机&#xff1a;塑造未来零售新貌 随着科技的飞速跃进&#xff0c;零售业态经历了一场深刻的转型&#xff0c;其中&#xff0c;智能售货机凭借其创新技术和灵活应用&#xff0c;正逐步成为新零售领域的焦点。本文旨在探讨智能售货机的市场演进路径、最新趋势&#xff0…

【AIGC调研系列】LLaVA++整合Phi-3和Llama-3能够实现什么

LLaVA能够为Phi-3和Llama-3带来的主要好处包括&#xff1a; 视觉处理能力的增强&#xff1a;通过整合Phi-3和Llama-3模型&#xff0c;创建了具备视觉处理能力的Phi-3-V和Llama-3-V版本&#xff0c;这意味着这些模型现在能够理解和生成与图像相关的内容[1]。这种能力的增加&…

智慧旅游驱动行业革新:智能技术引领服务全面升级,匠心打造高品质、个性化旅游新体验

一、引言 随着科技的飞速发展和信息化程度的不断提高&#xff0c;智慧旅游正逐渐成为旅游业发展的新趋势。智慧旅游&#xff0c;顾名思义&#xff0c;是以智能化技术为支撑&#xff0c;通过大数据、云计算、物联网、人工智能等先进技术的应用&#xff0c;实现旅游服务的全面升…

Web前端一套全部清晰 ⑤ day3 列表 表格 表单标签 综合案例

人生是一直向前无法倒退的旅程&#xff0c;所以可以偶尔回头&#xff0c;但一定要往前看 —— 24.4.29 一、综合案例1-体育新闻列表 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport…

2024-04学习笔记

1.sql优化-子查询改为外连接 1.改之前 改之前是这样&#xff0c;那针对查出来的每一条数据&#xff0c;都要执行一次箭头所指的函数 执行的sql很慢 2.改之后 改之后是这样&#xff0c;整体做外连接&#xff0c;不用每一条都再执行一次查询 执行时间缩短了好几倍 2.Mybatis中…

21.Nacos集群搭建

模拟Nacos三个节点&#xff0c;同一个ip,启动三个不同的端口&#xff1a; 节点 nacos1, 端口&#xff1a;8845 节点 nacos2, 端口&#xff1a;8846 节点 nacos3, 端口&#xff1a;8847 1.搭建数据库&#xff0c;初始化数据库表结构 这里我们以单点的数据库为例 首先新建一…

Facebook全攻略:从注册到养号再到防封,一篇搞定!

作为海外热门的社交媒体平台之一&#xff0c;Facebook已经成为品牌营销的重要渠道。很多新手小白在拿到Facebook账号后还是不知道如何操作&#xff0c;今天为大家准备了一份Facebook操作全攻略&#xff0c;从注册、养号到防封号&#xff0c;让你的Facebook跨境之旅更加顺畅&…

小程序地理位置接口怎么开通?

小程序地理位置接口有什么功能&#xff1f; 如果我们提审后驳回理由写了“当前提审小程序代码包中地理位置相关接口( chooseAddress、getLocation )暂未开通&#xff0c;建议完成接口开通后或移除接口相关内容后再进行后续版本提审”&#xff0c;如果你也碰到类似问题&#xf…

Ansys Speos|进行智能手机镜头杂散光分析

本例的目的是研究智能手机Camera系统的杂散光。杂散光是指光向相机传感器不需要的散光光或镜面光&#xff0c;是在光学设计中无意产生的&#xff0c;会降低相机系统的光学性能。 在本例中&#xff0c;光学透镜系统使用Ansys Zemax OpticStudio (ZOS)进行设计&#xff0c;并使用…

使用 GitHub Actions 实现项目的持续集成(CI)

目录 什么是 GitHub Actions 基础概念 Workflow 文件 Workflow 语法 实例&#xff1a;编译 OpenWrt 什么是 GitHub Actions GitHub Actions 是 GitHub 推出的持续集成&#xff08;Continuous Integration&#xff0c;简称 CI&#xff09;服务它允许你创建自定义工作流&am…

源码编译framework.jar 并成功导入android studio 开发

一、不同安卓版本对应路径 Android N/O: 7 和 8 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar Android P/Q: 9 和 10 out/soong/.intermediates/frameworks/base/framework/android_common/combined/framework.jar Android R: 11以上 out/so…

Qt下使用7Z源码进行压缩和解压缩

7Z压缩是一款常用的压缩算法和工具&#xff0c;本文主要介绍一款在qt环境下进行编译的压缩方法。 本人测试是可以正常跑通的&#xff0c;具体代码部分请下载&#xff1a;下载链接&#xff0c;提取码&#xff1a;ev9t 7z源码网址&#xff1a;7-Zip 7z简介&#xff1a; 7z 是…

有趣的大模型之我见 | Llama AI Model

Llama 开源吗&#xff1f; 我在写《有趣的大模型之我见 | Mistral 7B 和 Mixtral 8x7B》时曾犹豫&#xff0c;在开源这个事儿上&#xff0c;到底哪个大模型算鼻祖&#xff1f;2023 年 7 月 18 日&#xff0c;Meta 推出了最受欢迎的大型语言模型&#xff08;LLM&#xff09;的第…