WPF。失去焦点后 TextBox 聚焦

WPF. TextBox focuses after losing focus

提问人:limeniye 提问时间:7/18/2023 更新时间:7/18/2023 访问量:32

问:

步骤

  • 订阅 TextBox 焦点事件
_associatedObject.GotKeyboardFocus += OnAssociatedObjectGotKeyboardFocus;
_associatedObject.LostKeyboardFocus += OnAssociatedObjectLostKeyboardFocus;

_associatedObject.GotFocus += (s,e) =>
{
    System.Diagnostics.Debug.WriteLine("GotFocus");
};

_associatedObject.LostFocus += (s, e) =>
{
    System.Diagnostics.Debug.WriteLine("LostFocus");
};

_associatedObject.IsKeyboardFocusedChanged += (s, e) =>
{
    System.Diagnostics.Debug.WriteLine("IsKeyboardFocusedChanged");
};

_associatedObject.IsKeyboardFocusWithinChanged += (s, e) =>
{
    System.Diagnostics.Debug.WriteLine("IsKeyboardFocusWithinChanged");
};
  • 在 LostKeyboardFocus 之后引发 LostFocusEvent
private void OnAssociatedObjectLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
    _associatedObject.RaiseEvent(new RoutedEventArgs(UIElement.LostFocusEvent));
    Keyboard.ClearFocus();
    System.Diagnostics.Debug.WriteLine("LostKeyboardFocus");
}
  • 打开程序并单击 文本框;
  • 元素获得焦点后,单击桌面或任何其他应用程序中,从 TextBox 元素中删除焦点;
  • 再次将焦点放回您的应用程序。

期望值

聚焦窗口后,不应向调试窗口添加任何内容,因为该元素已为 LostFocus

结果

IsKeyboardFocusWithinChanged
IsKeyboardFocusedChanged
GotKeyboardFocus
IsKeyboardFocusWithinChanged
IsKeyboardFocusedChanged
LostFocus
LostKeyboardFocus
LostFocus

enter image description here

C# WPF 键盘 onfocus 失焦

评论


答: 暂无答案