UIElement.Focus 方法

定义

尝试将焦点设定到此元素上。

public:
 virtual bool Focus();
public bool Focus ();
abstract member Focus : unit -> bool
override this.Focus : unit -> bool
Public Function Focus () As Boolean

返回

如果键盘焦点和逻辑焦点同时设定到此元素上,则为 true;如果只有逻辑焦点设定到此元素上或此方法调用未强制更改焦点,则为 false

实现

示例

以下示例将焦点设置为 TextBox 引用 Name的 ,然后调整光标在 中 TextBox的位置。

void OnClickMoveToStart(object sender, RoutedEventArgs e)
{
    tbPositionCursor.Focus();
    tbPositionCursor.Select(0, 0);
}
Private Sub OnClickMoveToStart(ByVal sender As Object, ByVal e As RoutedEventArgs)

    tbPositionCursor.Focus()
    tbPositionCursor.Select(0, 0)

End Sub

注解

若要可聚焦, FocusableIsEnabled 必须都是 true

即使元素可聚焦且有效, Focus 预览事件也可能在特定树中处理,并且可能不允许将焦点放在该元素 (例如在复合控件) 中。 在这种情况下,此方法返回 false

通常,焦点由两个不同的概念控制:键盘焦点和逻辑焦点。 这两个概念并不总是相同的。 有关详细信息,请参阅 焦点摘要输入概述

如果调用 Focus 返回 trueIsKeyboardFocused 则 和 IsKeyboardFocusWithin 也是 true

如果相关属性尚未true为 ,则调用 Focus时,将按以下顺序引发以下一个或多个以下事件:PreviewLostKeyboardFocusPreviewGotKeyboardFocus (source 是新的焦点目标) 、、 LostKeyboardFocusIsKeyboardFocusedChangedIsKeyboardFocusWithinChangedGotKeyboardFocus (source 是新的焦点目标) 。

要使此调用成功,应用程序中的其他一些元素需要之前具有焦点。 此外,当父容器元素调用此方法时,在某些情况下,子元素获得焦点,并且返回值为 false。 若要测试元素是否具有焦点,请使用 IsKeyboardFocusWithinIsKeyboardFocused 属性。

适用于