【发布时间】:2011-01-09 22:59:15
【问题描述】:
当 ALT 键与 .NET 中的另一个键同时按下时,您如何处理 KeyDown 事件?
【问题讨论】:
标签: c# winforms keyboard user-input
当 ALT 键与 .NET 中的另一个键同时按下时,您如何处理 KeyDown 事件?
【问题讨论】:
标签: c# winforms keyboard user-input
KeyEventArgs 类为键修饰符定义了几个属性 - Alt 是其中之一,如果按下 alt 键,则计算结果为 true。
【讨论】:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Alt && e.KeyData != (Keys.RButton | Keys.ShiftKey | Keys.Alt))
{
// ...
}
}
【讨论】:
类似:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Alt)
{
e.Handled = true;
// ,,,
}
}
【讨论】:
这是最终有效的代码
if (e.KeyCode >= Keys.A && e.KeyCode <= Keys.Z && e.Alt){
//Do SomeThing
}
【讨论】:
我捕获了 alt 和向下或向上箭头键来增加 numericUpDown 控件的值。 (我使用 alt 键 + 向下/向上键,因为此表单也有一个 datagridview,我希望向下/向上键在该控件上正常操作。)
private void frmAlzCalEdit_KeyDown(object sender, KeyEventArgs e)
{
if (e.Alt && e.KeyCode == Keys.Down)
{
if (nudAlz.Value > nudAlz.Minimum) nudAlz.Value--;
}
if (e.Alt && e.KeyCode == Keys.Up)
{
if (nudAlz.Value < nudAlz.Maximum) nudAlz.Value++;
}
}
【讨论】:
为您的表单创建一个 KeyUp 事件或像我一样使用库来获取 GlobalHook,以便您可以在表单外按这些键。
例子:
private void m_KeyboardHooks_KeyUp(object sender, KeyEventArgs e)
{
if ( e.KeyCode == Keys.Alt || e.KeyCode == Keys.X)
{
}
}
【讨论】: