| |
| |
| |
| this.WindowState = FormWindowState.Maximized; |
| this.FormBorderStyle = FormBorderStyle.None; |
| |
| /* |
| FormBorderStyle.FixedSingle |
| FormBorderStyle.Fixed3D |
| FormBorderStyle.FixedDialog |
| FormBorderStyle.Sizable |
| FormBorderStyle.FixedToolWindow |
| FormBorderStyle.SizableToolWindow |
| */ |
| |
| |
| 窗口在非FormBorderStyle.None 的状态,窗口的标题栏 可以被双击,或者拖拽, 导致窗口被缩小。 |
| |
| 如果想实现 无法退出的全屏,就应该用FormBorderStyle.None。 |
| 还需要处理键盘事件! |
| 1.tapstop 也Disable, 防止有人tab ===> Enter(顺序也最好整理下) |
| 2.Dle + Alt + Ctrl |
| 3.Alt + Tab |
| 4.Alt + F4 |
| 5.最下的任务栏,可以隐藏 窗口Form1的【属性】= >【ShowInTaskbar】 设置【False】 (这样,键盘Alt+ Tab事件,就无法用鼠标右键关闭 ) |
| 6.任务管理器无法控制, 只能win10设置【隐藏任务栏】 |
| 7.屏蔽 【Win 键】 |
| - Win+R 运行在环境变量的程序(也可以指定目录) |
| - Win+Q 运行Win10菜单栏,可以搜索和运行 所有软件 |
| - 等等 |
| |
| Tips:如果不用键盘,其实好办。 |
| |
| |
| |
| |
| |
| |
| Console.WriteLine("主显示器完整尺寸:"); |
| Console.WriteLine("宽:" + Screen.PrimaryScreen.Bounds.Width); |
| Console.WriteLine("高:" + Screen.PrimaryScreen.Bounds.Height); |
| |
| Console.WriteLine("主显示器工作尺寸(排除任务栏、工具栏):"); |
| Console.WriteLine("宽:" + Screen.PrimaryScreen.WorkingArea.Width); |
| Console.WriteLine("高:" + Screen.PrimaryScreen.WorkingArea.Height); |
| |
| Console.WriteLine("当前显示器完整尺寸:"); |
| Console.WriteLine("宽:" + Screen.GetBounds(this).Width); |
| Console.WriteLine("高:" + Screen.GetBounds(this).Height); |
| |
| |
| Console.WriteLine("当前显示器工作尺寸(排除任务栏、工具栏):"); |
| Console.WriteLine("宽:" + Screen.GetWorkingArea(this).Width); |
| Console.WriteLine("高:" + Screen.GetWorkingArea(this).Height); |
| |
| |
| |
| |
| |
| |
| this.SuspendLayout(); |
| if (m_IsFullScreen)//全屏 |
| { |
| this.WindowState = FormWindowState.Maximized; |
| this.FormBorderStyle = FormBorderStyle.None; |
| } |
| else//还原 TODO:还原后的窗体应该与全屏前的大小一致 |
| { |
| this.WindowState = FormWindowState.Normal; |
| this.FormBorderStyle = FormBorderStyle.Sizable; |
| } |
| this.ResumeLayout(false); |
| |
| |
| |
| ## 挂起布局逻辑与恢复布局逻辑 |
| |
| |
| 有时候,需要重新布置整个窗口里的控件的位置布局,如刚刚初始化时就是一个例子。这样在每增加一个有dock等属性的控件时,由于这些布局都是相对性布局,都需要重新计算位置什么的,并实际执行布局。如果一个窗口上有50个控件,这个布局处理就要执行50次,并触发50 * n次的布局有关的事件。【n】 |
| |
| 而实际上,在定义布局方案过程中,这些布局是没有必要每个控件定义之后就立即执行布局的,也没有必要处理因此发出的布局事件。 |
| |
| |
| |
| 更合理的办法,是在全部定义完所有控件的布局方案之后,才一次性计算布局结果,并一次执行。 |
| |
| |
| |
| 于是,就设计了这两个函数。第一个函数用于暂停实际的布局,而第二个函数用于恢复实际布局。 |
| |
| 在程序里,如果你需要大规模调整布局方案时,就可以先调用suspendlayout,暂停布局执行,然后定义谁在前,谁在后,谁在上,谁在下,谁填充左,谁填充右。 |
| |
| 布置完毕。resumelayout,于是,一次性处理完毕。 |
| |
| |
| |
| ### 如果注释这两个方法的调用,效果上也不会有什么变化,只是在性能上会造成不必要的开销。 |
| ### 如果没有太多控件的计算处理,则意义不大! |
| |
| |
| --------------------- |
| 作者:霜之咏叹调 |
| 来源:CSDN |
| 原文:https://blog.csdn.net/chuck_lu/article/details/17391999 |
| 版权声明:本文为博主原创文章,转载请附上博文链接! |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)