Control.Focus(FocusState) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
嘗試設定控制項的焦點。
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
指定焦點的設定方式,做為列舉的值。
傳回
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或Keyboard,以便顯示正確的焦點視覺效果。 這表示如果您在呼叫 Focus (FocusState.Programmatic) 之後檢查FocusState屬性的值,FocusState屬性的值會是Pointer或Keyboard。
在針對 Windows 8 編譯但執行于 Windows 8.1 的應用程式中,會保留Windows 8行為。 FocusState屬性值為程式設計,並顯示鍵盤焦點視覺效果。