zoukankan      html  css  js  c++  java
  • c# 窗口API,以及全屏锁定一些tips

    
    
    
    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 
    版权声明:本文为博主原创文章,转载请附上博文链接!
    
  • 相关阅读:
    Golang :索引值对的数组
    MySql-BlackHole:黑洞引擎
    golang fmt 中的 Sprintf、Fprintf和 Printf函数
    golang 中的 rune 和 byte
    mysql 全文索引
    Python 原始字符串
    如何给博客园(或者CSDN)设置域名访问
    CPU、内存、磁盘三者的关系
    018.redis 阶段性总结:1T 以上海量数据+10 万以上 QPS 高并发+ 99.99% 高可用
    017.redis 在实践中的一些常见问题以及优化思路(包含 linux 内核参数优化)
  • 原文地址:https://www.cnblogs.com/scotth/p/10459883.html
Copyright © 2011-2022 走看看