При использовании this.FormBorderStyle = FormBorderStyle.None,ProcessCmdKey может не работать?

Мой код:

protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
    if (keyData == (Keys.LWin | Keys.M))
    {
        MessageBox.Show("LWin M");
        return true;
    }
    return base.ProcessCmdKey(ref msg, keyData);
}

private void Form1_Load(object sender, EventArgs e)
{
    this.FormBorderStyle = FormBorderStyle.None;
}

но MessageBox.Show("LWin M"); никогда не работает, кто может мне помочь? спасибо

Обновить

MessageBos.Show("LWin M"); 

просто для теста, настоящий код:

this.WindowState = FormWindowState.Minimized;

2 ответа

Решение

Это не имеет ничего общего с FormBorderStyle, ваш код не работает, когда вы также опускаете событие Load. Сочетание клавиш Win + M используется Windows перед отправкой в ​​программу. Вы можете легко сказать, что он делает, это минимизирует активное окно.

Никогда не используйте клавишу Windows для своих собственных ярлыков, вам нужно придерживаться Ctrl, Alt и Shift. Даже использование неназначенных ярлыков является плохой идеей, которая сломается в следующей версии Windows.

Это зависит от того, что вы хотите

если вы хотите проверить, нажата ли кнопка "M" или "LWin", попробуйте следующую часть:

if (keyData == Keys.LWin || keyData == Keys.M)
Другие вопросы по тегам