次の方法で共有


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 を渡します。 タブ シーケンスやキーを押すなどのキーボード操作の結果としてフォーカスを設定する場合は、 FocusState.Keyboard をパラメーターとして渡します。 たとえば、 ItemsControl を実装し、ユーザーがコントロール内の項目間でフォーカスを移動できるようにキーの押しを処理する場合は、キー押しハンドラーで Focus を呼び出すときに キーボード フォーカス状態を使用します。

以前のバージョンのメモ

注意

Windows 8では、FocusStateProgrammatic の場合、以前の入力メソッドがポインターであった場合でも、キーボード フォーカス ビジュアルが表示されます。 Windows 8.1では、Focus (FocusState.Programmatic) を呼び出すと、以前の FocusState (ポインターまたはキーボード) が保持され、正しいフォーカス ビジュアルが表示されます。 つまり、Focus (FocusState.Programmatic) を呼び出した後に FocusState プロパティの値をチェックすると、FocusState プロパティの値は Pointer または Keyboard になります。

Windows 8用にコンパイルされたが、Windows 8.1で実行されるアプリでは、Windows 8の動作は保持されます。 FocusState プロパティの値は Programmatic で、キーボード フォーカス ビジュアルが表示されます。

適用対象

こちらもご覧ください