Kyr*_*o M 232
使用课程Keyboard.使用Keyboard.IsKeyDown您可以检查Control,Shift,Alt现在是否已关闭.
换班次:
if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
{ /* Your code */ }
Run Code Online (Sandbox Code Playgroud)
对于控制:
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{ /* Your code */ }
Run Code Online (Sandbox Code Playgroud)
对于Alt:
if (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt))
{ /* Your code */ }
Run Code Online (Sandbox Code Playgroud)
Chu*_*age 114
还有:
// Have to get this value before opening a dialog, or user will have released the control key
if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
}
Run Code Online (Sandbox Code Playgroud)
小智 8
private bool IsShiftKey { get; set; }
private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{
IsShiftKey = Keyboard.Modifiers == ModifierKeys.Shift ? true : false;
if ((Key.Oem3 == e.Key || ((IsShiftKey && Key.Oem4 == e.Key) || (IsShiftKey && Key.Oem6 == e.Key) || (IsShiftKey && Key.Oem5 == e.Key)) && (validatorDefn as FormatValidatorDefinition).format == "packedascii"))
{
e.Handled = true;
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我处理它的方式(使用 PreviewKeyDown),假设我们正在寻找 Alt + R...
private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{
if ((Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt)
&& e.SystemKey == Key.R)
{
//do whatever
}
}
Run Code Online (Sandbox Code Playgroud)
也许有人可以澄清为什么我必须使用 e.SystemKey 而不仅仅是 e.Key,也许是由于修饰符?但这在搜索修饰符+键时对我来说完美无缺。
小智 5
部分借用@Josh,有点类似于@Krushik,还引用了有关KeyEventArgs.systemKey和KeyEventArgs.Key之间差异的问题(回答为什么Josh必须使用SystemKey);其中,使用修饰键(例如 Alt)时,e.Key 返回 Key.System,因此“真实”键位于 e.SystemKey 内。
解决这个问题的方法是首先获取“真实”密钥,然后执行条件:
private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{
// Fetch the real key.
var key = e.Key == Key.System ? e.SystemKey : e.Key;
if ((Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt))
&& key == Key.Return)
{
// Execute your code.
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
77142 次 |
| 最近记录: |