我正在为一家汽车公司开发一个反馈系统.在计费台上,有一个双显示器设置:一个用于计费人员,另一个用于提供反馈的客户.我需要在两个屏幕上复制Windows表单,作为镜像,以便计费人员可以看到客户给出的反馈.我使用下面的...
我正在为一家汽车公司开发一个反馈系统.在计费台上,有一个双显示器设置:一个用于计费人员,另一个用于提供反馈的客户.我需要在两个屏幕上复制Windows表单,作为镜像,以便计费人员可以看到客户给出的反馈.
我使用下面的代码在辅助屏幕上显示:
Screen[] sc;
Form f = new Form();
sc = Screen.AllScreens;
f.FormBorderStyle = FormBorderStyle.None;
f.Left = sc[1].Bounds.Left;
f.Top = sc[1].Bounds.Top;
f.Height = sc[1].Bounds.Height;
f.Width = sc[1].Bounds.Width;
f.StartPosition = FormStartPosition.Manual;
f.Show();
但是,它不会镜像主屏幕上的表单.我还提到了duplicate window问题,但它会为同一个表单创建不同的实例,这些实例不会反映Windows窗体.如何在两个屏幕上镜像?
解决方法:
一种可能的方法是捕获将数据输入到计时器上的图像的表单(使用合理的延迟使其“几乎是实时”)并在辅助表单上的PictureBox上使用它.要将表单捕获到图像,请执行以下操作:
Bitmap bmp = new Bitmap(form.Width, form.Height);
form.DrawToBitmap(bmp, new Rectangle(Point.Empty, bmp.Size));
然后将bmp作为图像分配给另一个窗体上的PictureBox.
我做了一个快速示例项目并将其上传到这里:https://www.dropbox.com/s/pjuk3zvpbglhodb/SOTestMirror.zip?dl=0
缺少在二级屏幕和样式上打开表单,但显示了可能的方法
结果是:
为了记录:我不知道为什么当在表单上调用DrawToBitmap时,它使用Windows 7 chrome而不是Windows 8来复制到位图…这很有意思,至少可以说(我会说一个bug ).这是在Win 8.1上运行的. (因为我在任何地方都没有看到过这个,我在Connect上打开了一个bug:https://connect.microsoft.com/VisualStudio/feedback/details/1059444/in-windows-8-drawtobitmap-on-a-form-draws-the-windows-7-chrome)
本文标题为:c#中多个屏幕上的重复Windows窗体
基础教程推荐
- 如何用C#创建用户自定义异常浅析 2023-04-21
- C# TreeView从数据库绑定数据的示例 2023-04-09
- Unity虚拟摇杆的实现方法 2023-02-16
- C#使用Chart绘制曲线 2023-05-22
- C#使用SQL DataAdapter数据适配代码实例 2023-01-06
- C#中参数的传递方式详解 2023-06-27
- C#执行EXE文件与输出消息的提取操作 2023-04-14
- C#实现归并排序 2023-05-31
- 浅谈C# 构造方法(函数) 2023-03-03
- C#使用NPOI将excel导入到list的方法 2023-05-22
