UIElement.GotFocus 事件

定义

UIElement 收到焦点时发生。 此事件是异步引发的,因此焦点可以在浮升完成之前再次移动。

// Register
event_token GotFocus(RoutedEventHandler const& handler) const;

// Revoke with event_token
void GotFocus(event_token const* cookie) const;

// Revoke with event_revoker
UIElement::GotFocus_revoker GotFocus(auto_revoke_t, RoutedEventHandler const& handler) const;
public event RoutedEventHandler GotFocus;
function onGotFocus(eventArgs) { /* Your code */ }
uIElement.addEventListener("gotfocus", onGotFocus);
uIElement.removeEventListener("gotfocus", onGotFocus);
- or -
uIElement.ongotfocus = onGotFocus;
Public Custom Event GotFocus As RoutedEventHandler 
<uiElement GotFocus="eventhandler"/>

事件类型

注解

建议尽可能使用 UIElement 焦点路由事件而不是 FocusManager 事件。

一次只能有一个 UI 元素具有焦点。

当另一个控件失去焦点、应用程序视图更改、用户切换应用程序或用户与系统交互,使应用程序不再位于前台时,控件可以获得焦点。

LostFocus 在 之前 GotFocus引发。

如果在 PanelGridView 等容器上使用控件合成或 UI 合成和处理GotFocus,请通过检查事件数据上的 OriginalSource 来确定合成中的哪个元素获得了焦点。

由于事件GotFocus没有任何专用事件数据,因此可以检查 UIElement.FocusState 属性来确定是用户还是应用代码导致元素获得焦点。

private void panel_GotFocus(object sender, RoutedEventArgs e)
{
    UIElement uie = e.OriginalSource as UIElement;
    FocusState fc = uie.FocusState;
}

键盘焦点与键盘事件处理特别相关,因为只有当前以键盘为中心的 UIElement 才能成为 KeyUpKeyDown 键事件的源。 应用程序可能会调用 UIElement.Focus (Microsoft.UI.Xaml.FocusState) 作为初始化操作,以便整个应用中的关键事件可用于检测访问或加速键。 有关详细信息,请参阅键盘交互

GotFocus 是路由事件。 有关路由事件概念的详细信息,请参阅 事件和路由事件概述

特定Windows 运行时控件可能对事件具有基于类的GotFocus处理。 如果是这样,控件可能具有 OnGotFocus 方法的替代。 通常,事件标记为由类处理程序处理,并且不会引发 GotFocus 事件,以便由该控件上的任何用户代码处理程序进行处理。 控件可能会处理 事件,以加载显示焦点矩形的视觉状态属性。

控件的焦点矩形是一个重要的视觉组件,它通过标识当前焦点元素并指示用户在应用程序 UI 的选项卡序列中的位置,帮助辅助功能。 在某些情况下,焦点操作的 FocusState 与是否应显示可见焦点指示器相关。

有关事件基于类的处理工作原理的详细信息,请参阅 事件和路由事件概述。 有关选项卡序列和辅助功能的详细信息,请参阅 键盘辅助功能

适用于

另请参阅