Control.Focus(FocusState) 方法

定义

尝试在控件上设置焦点。

public:
 virtual bool Focus(FocusState value) = Focus;
bool Focus(FocusState const& value);
public bool Focus(FocusState value);
function focus(value)
Public Function Focus (value As FocusState) As Boolean

参数

value
FocusState

指定焦点的设置方式,作为 枚举的值。

返回

Boolean

bool

如果焦点已设置为控件,或焦点已位于控件上,则为 true。 如果控件不可聚焦,则为 false

示例

在此示例中,单击“编辑”按钮会导致在 TextBox 上设置焦点,因此将编程焦点状态传递给 Focus 方法。

<StackPanel>
    <Button Content="Edit" Click="Button_Click"/>
    <TextBox x:Name="EditorTextBox" IsReadOnly="True"/>
</StackPanel>
private void Button_Click(object sender, RoutedEventArgs e)
{
    EditorTextBox.IsReadOnly = false;
    EditorTextBox.Focus(FocusState.Programmatic);
}

注解

如果在将 IsTabStop 设置为 false的 上Control调用此方法,则调用将被忽略且焦点不会移动,并且调用将返回 false

不能通过将 作为 参数调用此方法 Unfocused 从控件中删除焦点。 不允许使用此值,并导致异常。 若要从控件中删除焦点,请将焦点设置为其他控件。

通常传递 FocusState.Programmatic 作为参数,以指示控件通过有意调用 Focus 方法获得焦点。 例如,如果单击“编辑”按钮导致在 TextBox 上设置焦点,请使用 编程 焦点状态。

如果将焦点设置为指针交互的直接结果,请传递 FocusState.Pointer 。 如果将焦点设置为键盘交互的结果(如 Tab 序列或按键),请将 FocusState.Keyboard 作为参数传递。 例如,如果要实现 ItemsControl 并处理按键以允许用户在控件中的项目之间移动焦点,请在按键处理程序中调用 Focus 时使用 键盘 焦点状态。

早期版本的说明

注意

在 Windows 8 中,当 FocusState编程时,即使先前的输入方法是指针,也会显示键盘焦点视觉对象。 在 Windows 8.1 中,调用 Focus (FocusState.Programmatic) 时,会保留以前的 FocusState指针键盘),以便显示正确的焦点视觉对象。 这意味着,如果在调用 Focus (FocusState.Programmatic) 后检查 FocusState 属性的值,则 FocusState 属性的值将是 PointerKeyboard

在为 Windows 8 编译但Windows 8.1中运行的应用中,将保留Windows 8行为。 FocusState 属性值为编程,并显示键盘焦点视觉对象。

适用于

另请参阅