如何知道控件已被处理或用户控件内部没有键up事件

本文关键字:控件 up 事件 内部 何知道 处理 用户 | 更新日期: 2023-09-27 18:10:56

我有一些uielement在我的UserControl。有些可能是多行文本框有些可能不是。例如:

 <Usercontrol PreviewKeyDown="Wizard_PreviewKeyDown">
    <StackPanel>
      <TextBox/>
      <TextBox AcceptsReturn="True"/>
    </StackPanel>
 <Usercontrol>

控件后面的代码:

 private void Wizard_PreviewKeyDown(object sender, KeyEventArgs e)
 {
     Key key = (e.Key == Key.System ? e.SystemKey : e.Key);
     if (key == Key.Enter)
     {
         UIElement uiElement = (e.OriginalSource as UIElement);
         GoToNext(); //if uiElement is already handled I should not call this method
     }
 }

我不应该调用我的GoToNext()方法,如果uiElement已经被处理。在这种情况下,如果我选择我的第一个文本框并单击Enter,它应该转到next,因为这个文本框不是多行。如果我选择我的第二个文本框,它不应该下一个,因为它是一个多行。我如何知道UIElement是否已处理?有人能帮我解决这个问题吗?

谢谢!

如何知道控件已被处理或用户控件内部没有键up事件

我使用KeyDown="Wizard_KeyDown"而不是PreviewKeyDown="Wizard_PreviewKeyDown",它是我想要的工作