通过 Win + M windows 快捷方式最小化无边框窗体

mye*_*lxx 5 .net c# winforms

标准Win+M键盘快捷键可最小化打开的窗口,但不会最小化无边框窗体。

我正在考虑在 KeyDown 事件中捕获Win+ 的关键事件,M但没有运气,因为它不会同时捕获两个而是只捕获第一个键。

我无法使用键盘快捷键以编程方式将其最小化

关于如何通过键盘快捷键最小化我的表单的任何想法?或者我可以捕获Win+M来触发最小化功能吗?

我正在使用无边框形式。要重现该问题,请创建一个 Form 并将其 BorderStyle 设置为 None 并运行该应用程序。当您按Win+ 时M,所有窗口都会最小化,但我的无边框形式保持正常。

Rez*_*aei 3

作为一个选项,您可以为无边框表单启用系统菜单(具有最小化窗口样式),然后虽然它不显示控制框,但最小化命令将按预期工作。

将以下代码添加到您的中Form,然后Win+M将按预期工作:

private const int WS_SYSMENU = 0x80000;
private const int WS_MINIMIZEBOX = 0x20000;
protected override CreateParams CreateParams
{
    get
    {
        CreateParams p = base.CreateParams;
        p.Style = WS_SYSMENU | WS_MINIMIZEBOX;
        return p;
    }
}
Run Code Online (Sandbox Code Playgroud)