TextBox.TextChanging Evento

Definición

Se produce sincrónicamente cuando el texto del cuadro de texto comienza a cambiar, pero antes de representarlo.

// Register
event_token TextChanging(TypedEventHandler<TextBox, TextBoxTextChangingEventArgs const&> const& handler) const;

// Revoke with event_token
void TextChanging(event_token const* cookie) const;

// Revoke with event_revoker
TextBox::TextChanging_revoker TextChanging(auto_revoke_t, TypedEventHandler<TextBox, TextBoxTextChangingEventArgs const&> const& handler) const;
public event TypedEventHandler<TextBox,TextBoxTextChangingEventArgs> TextChanging;
function onTextChanging(eventArgs) { /* Your code */ }
textBox.addEventListener("textchanging", onTextChanging);
textBox.removeEventListener("textchanging", onTextChanging);
- or -
textBox.ontextchanging = onTextChanging;
Public Custom Event TextChanging As TypedEventHandler(Of TextBox, TextBoxTextChangingEventArgs) 
<TextBox TextChanging="eventhandler"/>

Tipo de evento

Ejemplos

En este ejemplo se muestra cómo controlar el evento TextChanging para implementar autocompletar simple para un TextBox.

<!-- Text box in MainPage.xaml -->
<TextBox x:Name="textBox" TextChanging="textBox_TextChanging"
         Width="200" Height="32"/>
public sealed partial class MainPage : Page
{
    // Boolean to keep track of whether or not you should ignore the next TextChanged event.  
    // This is needed to support the correct behavior when backspace is tapped.
    public bool m_ignoreNextTextChanged = false;

    // Sample list of strings to use in the autocomplete.
    public string[] m_options = { "microsoft.com", "dev.windows.com", "msn.com", "office.com", "msdn.microsoft.com" };

    public MainPage()
    {
        this.InitializeComponent();
    }

    private void textBox_TextChanging(TextBox sender, TextBoxTextChangingEventArgs args)
    {
        // Needed for the backspace scenario.
        if (m_ignoreNextTextChanged)
        {
            m_ignoreNextTextChanged = false;
            return;
        }
        // All other scenarios other than the backspace scenario.
        // Do the auto complete.
        else
        {
            string s = textBox.Text;
            if (s.Length > 0)
            {
                for (int i = 0; i < m_options.Length; i++)
                {
                    if (m_options[i].IndexOf(s) >= 0)
                    {
                        if (s == m_options[i])
                            break;

                        textBox.Text = m_options[i];
                        textBox.Select(s.Length, m_options[i].Length - s.Length);
                        break;
                    }
                }
            }
        }
    }

    protected override void OnKeyDown(KeyRoutedEventArgs e)
    {
        if (e.Key == Windows.System.VirtualKey.Back
            || e.Key == Windows.System.VirtualKey.Delete)
        {
            m_ignoreNextTextChanged = true;
        }
        base.OnKeyDown(e);
    }
}

Comentarios

Para obtener datos de eventos, consulte TextBoxTextChangingEventArgs.

El evento TextChanging se produce sincrónicamente antes de que se represente el nuevo texto. Por el contrario, el evento TextChanged es asincrónico y se produce después de representar el nuevo texto.

Cuando se produce el evento TextChanging, la propiedad Text ya refleja el nuevo valor (pero no se representa en la interfaz de usuario). Normalmente, este evento se controla para actualizar el valor de Texto y la selección antes de que se represente el texto. Esto evita que el texto parpadee que puede ocurrir cuando el texto se representa, actualiza y se vuelve a representar rápidamente.

Nota

Se trata de un evento sincrónico que puede producirse en ocasiones cuando no se permiten cambios en el árbol visual XAML, como durante el diseño. Por lo tanto, debe limitar el código dentro del controlador de eventos TextChanging principalmente para inspeccionar y actualizar la propiedad Text . Si intenta realizar otras acciones, como mostrar un elemento emergente o agregar o quitar elementos del árbol visual, puede provocar errores potencialmente irrecuperables que pueden provocar un bloqueo. Se recomienda realizar estos otros cambios en un controlador de eventos TextChanged o ejecutarlos como una operación asincrónica independiente.

Se aplica a

Consulte también