Control.Focus(FocusState) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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.