C# 将密钥事件路由到其他控件
是否有任何标准方法将所有关键事件从控件C# 将密钥事件路由到其他控件,c#,wpf,events,event-handling,C#,Wpf,Events,Event Handling,是否有任何标准方法将所有关键事件从控件A路由到其他控件B?我希望键盘的焦点仍然集中在A上,但是A的事件处理程序将触发B的所有事件处理程序来处理按键事件 edit:澄清:调用我为B编写的特定事件处理程序是不够的。我需要模拟实际事件。例如,我希望如果一个键被发送到文本框,它将被写入文本框。下面给出的解决方案不能做到这一点(更不用说,如果在B中添加新的事件处理程序,它将完全失败) 我知道WPF区分逻辑焦点和键盘焦点,但我需要两个焦点都保持在控件A,但在某些情况下,会将其传入事件路由到其他控件。您不能这
A
路由到其他控件B
?我希望键盘的焦点仍然集中在A
上,但是A
的事件处理程序将触发B
的所有事件处理程序来处理按键事件
edit:澄清:调用我为B
编写的特定事件处理程序是不够的。我需要模拟实际事件。例如,我希望如果一个键被发送到文本框
,它将被写入文本框
。下面给出的解决方案不能做到这一点(更不用说,如果在B
中添加新的事件处理程序,它将完全失败)
我知道WPF区分逻辑焦点和键盘焦点,但我需要两个焦点都保持在控件
A
,但在某些情况下,会将其传入事件路由到其他控件。您不能这样做吗
private void button1_Click(object sender, RoutedEventArgs e)
{
// Check if the event needs to be passed to button2's handler
if (conditionIsMet)
{
// Send the event to button2
button2.RaiseEvent(e);
}
else
{
// button1's "Click" code
}
}
private void button2_Click(object sender, RoutedEventArgs e)
{
// button2's "Click" code
}
编辑:修改代码以使用
RaiseEvent()
方法以编程方式引发特定事件,而不是仅调用按钮2的事件处理程序难道您不能让控件a的键事件进行一些检查,并在需要时调用控件B的键事件吗?否!这不会触发事件,它只调用一个特定的函数,该函数曾经与按钮的点击事件关联。我想模拟WPF发送的实际事件。@Elazar-请参阅我的编辑。RaiseEvent()
方法会起作用吗?不会!这不会触发事件,它只调用一个特定的函数,该函数曾经与按钮的点击事件关联。我想模拟WPF发送的实际事件。这就是我要寻找的!我想知道为什么这叫募捐活动。我搜索了fire事件、invoke事件和trigger事件,但没有结果。。。