Share via


FocusManager.TryFocusAsync(DependencyObject, FocusState) Método

Definición

Intenta establecer de forma asincrónica el foco en un elemento cuando se inicializa la aplicación.

public:
 static IAsyncOperation<FocusMovementResult ^> ^ TryFocusAsync(DependencyObject ^ element, FocusState value);
/// [Windows.Foundation.Metadata.RemoteAsync]
 static IAsyncOperation<FocusMovementResult> TryFocusAsync(DependencyObject const& element, FocusState const& value);
[Windows.Foundation.Metadata.RemoteAsync]
public static IAsyncOperation<FocusMovementResult> TryFocusAsync(DependencyObject element, FocusState value);
function tryFocusAsync(element, value)
Public Shared Function TryFocusAsync (element As DependencyObject, value As FocusState) As IAsyncOperation(Of FocusMovementResult)

Parámetros

element
DependencyObject

Objeto en el que se va a establecer el foco.

value
FocusState

Uno de los valores de la enumeración FocusState que especifica cómo un elemento puede obtener el foco.

Devoluciones

FocusMovementResult que indica si el foco se estableció correctamente.

Atributos

Requisitos de Windows

Familia de dispositivos
Windows 10, version 1803 (se introdujo en la versión 10.0.17134.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v6.0)

Ejemplos

Aquí se muestra cómo establecer el foco en un objeto WebView y, si se produce un error, se restaura el foco en el elemento original.

async void MoveFocus(WebView webView)) 
{ 
    FocusMovementResult result; 
    result = await FocusManager.TryFocusAsync(webView, FocusState.Programmatic); 
    if (!result.Succeeded) 
    { 
        // Restore focus to original element. 
        this.Focus(FocusState.Programmatic); 
    } 
}

Comentarios

Algunos objetos, como webView, se pueden ejecutar en el proceso de la aplicación o en un proceso independiente (consulte WebViewExecutionMode.SeparateProcess).

Cuando un objeto se ejecuta en el proceso de la aplicación, los siguientes eventos de foco se producen según lo previsto tanto para el objeto centrado anteriormente como para el objeto recién centrado:

Sin embargo, si el objeto recién centrado se ejecuta en un proceso independiente, algunos de estos comportamientos de eventos pueden diferir.

  • GetFocusedElement no devuelve el objeto recién centrado hasta que se complete la operación TryFocusAsync.
  • El control que pierde el foco recibe su evento LosingFocus de forma sincrónica, pero no recibe LostFocus hasta que se completa la operación asincrónica.
  • El control que obtiene el foco recibe su evento GettingFocus sincrónicamente, pero no recibe GotFocus hasta que se completa la operación asincrónica.

TryFocusAsync se completa sincrónicamente cuando se llama a en un elemento que se ejecuta en el proceso de la aplicación.

Se aplica a

Consulte también