参考:(60条消息) winForm在多显示器(主显示器 + 扩展显示器)上显示最大化和还原操作。_梦的远方~的博客-CSDN博客

原因:

我开发用笔记本,缩放设置为150%;同时外接一个扩展屏,缩放设置为125%。

winform自定义窗体,FormBorderStyle = None,原本的窗体最大化代码:

private void labelMaximized_Click(object sender, EventArgs e){if (this.WindowState == FormWindowState.Maximized){this.WindowState = FormWindowState.Normal;}else{this.MaximizedBounds = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;this.WindowState = FormWindowState.Maximized;}}

两个显示器缩放不一致时,在副屏无法正常最大化窗口。

解决:

舍弃微软提供的方法,自定义最大化时窗口的大小和显示位置。

代码(参考开头的博客):

// 窗体显示状态
private FormWindowState formWindowState = FormWindowState.Normal;
// 最大化前窗体大小
private Size formSizeNormal;
private void labelMaximized_Click(object sender, EventArgs e){if (this.WindowState == FormWindowState.Maximized || this.formWindowState == FormWindowState.Maximized){Screen currentSreen = Screen.FromControl(this);this.MaximizedBounds = currentSreen.WorkingArea;// 位置int x = currentSreen.Bounds.Left + (currentSreen.Bounds.Width - formSizeNormal.Width) / 2;int y = (currentSreen.Bounds.Height - formSizeNormal.Height) / 2;this.Location = new Point(x, y);// 大小this.Size = formSizeNormal;this.formWindowState = FormWindowState.Normal;}else{formSizeNormal = this.Size;Screen currentScreen = Screen.FromControl(this);this.MaximizedBounds = currentScreen.WorkingArea;this.Location = new Point(currentScreen.WorkingArea.Left, currentScreen.WorkingArea.Top);this.Size = currentScreen.WorkingArea.Size;this.formWindowState = FormWindowState.Maximized;}}

解决winform自定义窗体在扩展显示器最大化不能充满屏幕相关推荐

  1. Winform 自定义窗体皮肤组件

    分享一个很久之前写的一个Winform换肤组件. 主要利用CBT钩子,NativeWindow来实现.可实现动态换皮肤插件修改窗体显示外观. 我们先定义一个自定义组件 using Skin; usin ...

  2. winform自定义窗体边框样式模板(支持四周边框拖拽改变窗体大小,支持鼠标拖动头部移动窗体)

    winform自己的边框已经过时,但小伙伴们又觉得自定义太过麻烦.本文将手把手教你自定义winform边框样式,并提供源代码链接(可直接作为模板使用).话不多说,直接上操作步骤. 先上一张完成截图 一 ...

  3. c#winform自定义窗体(含源码)

    第一步:首先引用DLL 再窗体中继承DevComponents.DotNetBar.OfficeForm public partial class MainForm : DevComponents.D ...

  4. C# WINFORM 自定义窗体 皮肤[转]

    跟我学做c#皮肤美化(一) --概述与导航 每每看着QQ,360等等那些软件漂亮的外衣时,你是不是总是在想我的软件什么时候才能穿上这么漂亮的外衣呢?不过现在当你看到这篇文章的时候不必再发出这样的疑问了 ...

  5. Android实践-自定义dialog从屏幕底部弹出并且充满屏幕宽度

    转载出处http://blog.csdn.net/nugongahou110 通常我们使用dialog的时候会遇到一些问题,比如我想用自己定义的布局来替代系统那个黑乎乎的布局时我要怎么做?我想要指定d ...

  6. Android自定义dialog从屏幕底部弹出并且充满屏幕宽度

    效果如下 1.首先我们先来定义一个dialog的布局 <?xml version="1.0" encoding="utf-8"?> <Line ...

  7. winForm在多显示器(主显示器 + 扩展显示器)上显示最大化和还原操作。

    一.问题描述: 客户笔记本电脑连接了一个显示器,将其设置成了"扩展这些显示器",将winForm窗体从主显示器拖到扩展显示器上,点击放大和还原的时候,界面的大小和位置不正确 解决方 ...

  8. C# Winform实现捕获窗体最小化、最大化、关闭按钮事件的方法,可通过重写WndProc来实现

    本文实例讲述了C# Winform实现捕获窗体最小化.最大化.关闭按钮事件的方法,主要是通过重写WndProc来实现的.分享给大家供大家参考.具体方法如下: 主要功能代码如下: ? 1 2 3 4 5 ...

  9. C# Winform 窗体美化(十、自定义窗体)

    十.自定义窗体 写在前面 最近在做 winform 应用程序,需要自定义一种窗口的样式,所以就随便搞了一个简单的窗口. 效果图 有两种样式,界面如下: 无标题: 有标题: 关键词 1.黑色描边边框 对 ...

最新文章

  1. 深入浅出统计学(十五)相关与回归及PYTHON实现
  2. dmesg与printk命令
  3. 用spring security设置用户jwt令牌和设置接口访问权限案例
  4. 对linux的mv命令设计测试用例,测试用例中的细节 - 八音弦的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. 一分钟在Linux 环境 搭建 SFTP服务器
  6. 将信息从个人计算机传递到中央,上载-常识-工控百科-工控家
  7. VMware 上Ubuntu虚拟机(15.1) ping不通物理主机(win10),但windows可以ping通虚拟机的问题解决方法...
  8. 风之大陆互通服务器账号,风之大陆有几个服务器?服务器互通吗?
  9. Maxwell简单使用
  10. Excel怎么锁定单元格
  11. PNETLAB模拟器汉化使用
  12. 如何在网页上添加分享按钮
  13. tp5微信公众号开发(1) 申请公众号配置token验证
  14. HTTPS之SNI介绍与Nginx多域名支持
  15. WineBottler for Mac (Mac运行exe程序) 使用教程
  16. laravel——实现Email形式的邮箱验证注册以及登陆功能
  17. csdn里的KaTex 公式语法
  18. 震惊,中国历朝历代疆域变迁视频【高清】
  19. 管壁式换热器cad图纸_换热器之列管式换热器
  20. 第三次作业 - 结对项目1

热门文章

  1. 一行能装逼的JavaScript代码的延伸
  2. css3 性能优化之 will-change 属性
  3. JSP停车场车位管理系统myeclipse开发oracle数据库BS模式java编程网
  4. WiFi分销小程序3.0.9独立版
  5. 使用PowerDesigner逆向工程生成pdm文件(超全)
  6. vmware安装linux虚拟机
  7. 最优化理论·非线性最小二乘
  8. 改变世界的17个方程式,你认识几个?
  9. 【C++】编程实现复数运算
  10. NLP中的特殊标记(Special Tokens)[PAD]、[CLS]、[SEP]、[UNK]