Control.Focus(FocusState) Método

Definição

Tenta definir o foco no controle.

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

Parâmetros

value
FocusState

Especifica como o foco foi definido, como um valor da enumeração .

Retornos

Boolean

bool

true se o foco foi definido como o controle ou o foco já estava no controle. false se o controle não for focalizável.

Exemplos

Neste exemplo, clicar em um botão "Editar" faz com que o foco seja definido em uma TextBox, portanto, o estado de foco programático é passado para o método 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);
}

Comentários

Se você chamar esse método em um Control com um IsTabStop definido como false, a chamada será ignorada e o foco não será movido e a chamada retornará false.

Não é possível remover o foco de um controle chamando esse método com Unfocused como o parâmetro . Esse valor não é permitido e causa uma exceção. Para remover o foco de um controle, defina o foco como um controle diferente.

Normalmente, você passa FocusState.Programmatic como o parâmetro para indicar que o controle obteve o foco por meio de uma chamada deliberada para o método Focus. Por exemplo, se clicar em um botão "Editar" fizer com que o foco seja definido em uma TextBox, use o estado de foco Programático .

Passe FocusState.Pointer se você estiver definindo o foco como o resultado direto de uma interação de ponteiro. Passe FocusState.Keyboard como o parâmetro se você estiver definindo o foco como resultado de uma interação com o teclado, como uma sequência de tabulação ou pressionamento de tecla. Por exemplo, se você estiver implementando um ItemsControl e manipular pressionamentos de tecla para permitir que o usuário mova o foco entre os itens no controle, use o estado foco do teclado ao chamar Foco no manipulador de pressionamento de teclas.

Observações para versões anteriores

Observação

Em Windows 8, quando FocusState for Programmatic, o visual de foco do teclado será mostrado mesmo que o método anterior de entrada tenha sido ponteiro. Em Windows 8.1, quando você chama Focus (FocusState.Programmatic), o FocusState anterior, ponteiro ou teclado, é mantido para que o visual de foco correto seja mostrado. Isso significa que, se você marcar o valor da propriedade FocusState depois de chamar Focus (FocusState.Programmatic), a propriedade FocusState terá um valor de Pointer ou Keyboard.

Em um aplicativo compilado para Windows 8, mas executado em Windows 8.1, o comportamento de Windows 8 é mantido. O valor da propriedade FocusState é Programmatic e o visual de foco do teclado é mostrado.

Aplica-se a

Confira também