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) 時,會保留先前的FocusStateKeyboard,以便顯示正確的焦點視覺效果。 這表示如果您在呼叫 Focus (FocusState.Programmatic) 之後檢查FocusState屬性的值,FocusState屬性的值會是PointerKeyboard

在針對 Windows 8 編譯但執行于 Windows 8.1 的應用程式中,會保留Windows 8行為。 FocusState屬性值為程式設計,並顯示鍵盤焦點視覺效果。

適用於

另請參閱