前言
Windows中,微信有个很快捷的功能,就是按ESC将当前的窗体最小化,这个功能用起来非常方便。 而C# WinForm中非常容易实现这个功能,在这里分享一下。
逻辑思路
-
首先,我们要监听监听ESC键,然后通过触发事件来运行我们需要执行的一些列动作或显示。
-
其次,C#中有哪些常用的方法呢?在C#中一般可以通过重写窗体类的ProcessCmdKey方法或使用KeyDown事件来监听键盘输入。不抬杠,KeyPress事件也能实现。
-
最后,在调用的方法时间中将窗体的大小改变,这里我们就可以联想到 Form窗体的WindowState窗体属性,它包括 FormWindowState.Maximized、 FormWindowState.Normal和FormWindowState.Minimized。也就是我们平时常说的最大化,正常和最小化。
代码描述
- 在这里我们以KeyDown事件为例的代码来实现监听键盘输入,需要非常注意的是(重点!重点!重点!)Form的属性杂项KeyPreview必须设置为True。即KeyPreview=True要提前设置属性或者用代码提前设置。
- 可以看到核心一句话his.WindowState = FormWindowState.Minimized,立刻就实现了窗体的最小化,是不是很简单。
private void Form_main_KeyDown(object sender, KeyEventArgs e)
{
//注意:Form的属性杂项KeyPreview必须设置为True.才可以使能捕获所有窗体上的按键事件
if (e.KeyCode == Keys.Escape)//按下ESC最小化//27
{
this.WindowState = FormWindowState.Minimized; //(最小化)
}
}
- 请勿止步,我们总要有点小追求,至少比微信做的强大一点点吧! 我将代码稍微复杂一点,条件改为如果最大化就变正常,如果正常变最小化。
private void Form_main_KeyDown(object sender, KeyEventArgs e)
{
//注意:Form的属性杂项KeyPreview必须设置为True.才可以使能捕获所有窗体上的按键事件
if (e.KeyCode == Keys.Escape)//按下ESC最小化//27
{
if (this.WindowState == FormWindowState.Maximized)
this.WindowState = FormWindowState.Normal;//(正常化)
else if (this.WindowState == FormWindowState.Normal)
this.WindowState = FormWindowState.Minimized; //(最小化)
}
}
最后
看看是不是很容易就实现了按ESC按键窗体的最小化了呢。还可以做的比微信还高级。
小伙伴们是不是都跃跃欲试了呢?