我KeyDown该如何判断是否CtrlUp被按下了.
private void listView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Control && e.KeyCode == Keys.Up)
{
//do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
因为永远不会在同一秒内完全按下两个键,所以无法工作.你总是一开始Ctrl然后另一个......
Gar*_*ler 30
您可以检查KeyEventArgs的修饰符,如下所示:
private void listView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up && e.Modifiers == Keys.Control)
{
//do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*ton 13
if (e.KeyCode == Keys.F1 && (e.Alt || e.Control || e.Shift))
{
//Do stuff...
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以尝试使用该Keyboard对象来检测IsKeyDown属性.此外,如果您不希望浏览器快捷方式覆盖,则可以将Handled属性设置为true.但是在覆盖浏览器快捷方式时要小心,因为它可能会导致混淆.
private void Page_KeyDown(object sender, KeyEventArgs e)
{
// If leftCtrl + T is pressed autofill username
if (Keyboard.IsKeyDown(Key.T) && Keyboard.IsKeyDown(Key.LeftCtrl))
{
txtUser.Text = "My AutoFilled UserName";
e.Handled = true;
}
}
Run Code Online (Sandbox Code Playgroud)
Nik*_*iko -2
你必须记住按下的键(即在布尔数组中)。并在按下(keydown)时将位置设置为 1,在 up 时将位置设置为 0。
这样您就可以跟踪多个密钥。我建议只为特殊键创建一个数组
所以你可以这样做:
if (e.KeyCode == Keys.Control)
{
keys[0] = true;
}
// could do the same with alt/shift/... - or just rename keys[0] to ctrlPressed
if (keys[0] == true && e.KeyCode == Keys.Up)
doyourstuff
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73023 次 |
| 最近记录: |