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
版权声明:本文为博主原创文章,转载请附上博文链接!
c# 窗口API,以及全屏锁定一些tips的更多相关文章
- 【温故而知新-Javascript】窗口效果 (全屏显示窗口、定时关闭窗口)
1.全屏显示窗口 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- h5的api dom全屏展示
下面是完整的例子,暂不做分析 <!DOCTYPE html> <html> <head> <title> FullScreen API 演示</t ...
- Q窗口操作函数(窗口最大化,全屏,隐藏最大化最小化按钮)
//Qt主窗口没有最小化,最大化按钮且最大化显示 int main(int argc, char *argv[]) { QApplication a(argc, argv); TestQtForWi ...
- QT5中全屏显示子窗口和取消全屏的方法
问题描述:用QT5做了个MDI多窗体应用程序,想把子窗体全屏显示,用网上的方法,但总是遇到问题. 网上的解决方法原文在这:http://www.cnblogs.com/Rick-w/archive/2 ...
- Fullscreen API:全屏操作
function launchFullscreen(element) { if(element.requestFullscreen) { element.requestFullscreen(); } ...
- win32之全屏窗口
游戏开发中经常使用会让游戏以全屏窗口的状态运行,下面一个例子就是来实现这个效果的. #include <windows.h> void RegisterMyClass(); LRESULT ...
- Windows中检测当前是否有窗口全屏
不时看到有人问起如何判断当前是否有窗口正处于全屏状态? 不过, 在解决这个问题之前先来解决一个简单的问题? 什么是全屏? 相当一部分人认为: 窗口如果是最大化的, 那么它就是最 ...
- QT 子窗口退出全屏
m_pWidget代表子窗口, 子窗口显示全屏: m_pWidget->setWindowFlags(Qt::Dialog); m_pWidget->showFullScreen(); 子 ...
- 第89天:HTML5中 访问历史、全屏和网页存储API
一.访问历史 API 通过history对象实现前进.后退和刷新之类的操作 history新增的两个方法history.replaceState()和history.pushState()方法属于HT ...
随机推荐
- 服务器Windows 2008 R2 安装SQL 2008 R2
在站点下载 SQL 2008 R2 在安装数据库之前首先安装IIS和.NET 3.5 解压 找到运行程序 (这里需要修改路径,数据库一般不要安装在系统盘) (选择任何一个都可以,这里选择system ...
- HBase学习2(HBase shell)
HBase 常用命令 查看当前用户:whoami 创建表:create '表名', '列族名1','列族名2','列族名N' 查看所有表:list 描述表: describe '表名' 判断表存在: ...
- Difference between stem and lemma
lemma与stem的区别 Difference between stem and lemma 先从wikipedia上看看什么是stem,什么是lemma? Lemma(morphology):In ...
- shitf+tab
在eclipse中,shitf+tab可以使代码向左移动.
- print webpage
使用浏览器打印网页时(A4纸)有一个固定的尺寸: 高级浏览器: width:700px height:1000px
- DH02-策略模式
模式简介 面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类. 策略模式(Strategy)定义了算法家族,分别封装起来,让他们相互间可 ...
- 抓包tcpdump
tcpdump是基于Unix系统的命令行式的数据包嗅探工具 tcpdump 可以监测真机或者模拟器 2g/3g/wifi下数据流动,前提手机必须root过. fillder也可以检测客户端数据包 ...
- Python入门及安装
简介 是用来编写应用程序的高级编程语言,"内置电池",哲学:简单优雅,尽量写容易看明白的代码,尽量写少的代码,适合干嘛:网络应用.网站.后台服务:日常些工具,如系统管理员需要的脚本 ...
- 五一培训 清北学堂 DAY3
今天是钟皓曦老师的讲授~ 今天的内容:动态规划 1.动态规划 动态规划很难总结出一套规律 例子:斐波那契数列 0,1,1,2,3,5,8,…… F[0]=0 F[1]=1 F[[n]=f[n-1]+ ...
- chromedriver驱动的浏览器和真实浏览器之间的差异
一. 打印百度首页底部的声明 如图,想打印@2018 Baidu...后面的一长串文字,可以通过class name定位的形式 可以看出,只有一个class name是"copyright- ...