C# 如何检测WPF中的按键?
我用WPF编写了一个带有几个按钮的桌面应用程序。到目前为止,它还可以工作,但现在我想将按钮链接到键。我希望程序检测按钮是否被按下,然后执行按钮单击方法。我试图通过添加此方法来实现这一点C# 如何检测WPF中的按键?,c#,wpf,uikeyinput,C#,Wpf,Uikeyinput,我用WPF编写了一个带有几个按钮的桌面应用程序。到目前为止,它还可以工作,但现在我想将按钮链接到键。我希望程序检测按钮是否被按下,然后执行按钮单击方法。我试图通过添加此方法来实现这一点 public void Window1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) { switch (e.Key) { case Key.D0:
public void Window1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
switch (e.Key)
{
case Key.D0:
Button0_Click(new object(), new RoutedEventArgs());
break;
case Key.D1:
Button1_Click(new object(), new RoutedEventArgs());
break;
case Key.D2:
Button2_Click(new object(), new RoutedEventArgs());
break;
case Key.D3:
Button2_Click(new object(), new RoutedEventArgs());
break;
case Key.D4:
Button4_Click(new object(), new RoutedEventArgs());
break;
}
}
但它根本不起作用。如何将已定义的按钮方法链接到键?您需要实现
键事件处理程序
,例如,对于键Enter
请参阅Microsoft文档
XAML代码
<StackPanel>
<TextBlock Width="300" Height="20">
Type some text into the TextBox and press the Enter key.
</TextBlock>
<TextBox Width="300" Height="30" Name="textBox1"
KeyDown="OnKeyDownHandler"/>
<TextBlock Width="300" Height="100" Name="textBlock1"/>
</StackPanel>
在加载主窗口时创建事件: 在XAML中:
Loaded="MainWindow_Loaded"
在代码隐藏中:
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
var window = Window.GetWindow(this);
window.KeyDown += HandleKeyPress;
}
处理按键事件:
private void HandleKeyPress(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.D0:
Button0_Click(new object(), new RoutedEventArgs());
break;
case Key.D1:
Button1_Click(new object(), new RoutedEventArgs());
break;
....
}
你能给我们提供更多的信息吗。执行是否从未到达_keyDown事件,或者“e.key”给出了错误的值。这是否回答了您的问题?使用
buttonToCalls.RaiseEvent(newroutedeventargs(ButtonBase.ClickEvent))代码>如果您的方法可以检测到键事件,并且无法引发button click事件,那么请使用我前面评论中提到的命令
private void HandleKeyPress(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.D0:
Button0_Click(new object(), new RoutedEventArgs());
break;
case Key.D1:
Button1_Click(new object(), new RoutedEventArgs());
break;
....
}