При использовании 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)