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 
版权声明:本文为博主原创文章,转载请附上博文连接!
相关文章
相关标签/搜索