Freigeben über


TextBox.TextChanging Ereignis

Definition

Tritt synchron auf, wenn sich der Text im Textfeld zu ändern beginnt, aber bevor er gerendert wird.

// 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"/>

Ereignistyp

Beispiele

In diesem Beispiel wird gezeigt, wie das TextChanging-Ereignis behandelt wird, um eine einfache automatische Vervollständigung für ein TextBox-Objekt zu implementieren.

<!-- 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);
    }
}

Hinweise

Ereignisdaten finden Sie unter TextBoxTextChangingEventArgs.

Das TextChanging-Ereignis tritt synchron auf, bevor der neue Text gerendert wird. Im Gegensatz dazu ist das TextChanged-Ereignis asynchron und tritt auf, nachdem der neue Text gerendert wurde.

Wenn das TextChanging-Ereignis auftritt, spiegelt die Text-Eigenschaft bereits den neuen Wert wider (er wird jedoch nicht auf der Benutzeroberfläche gerendert). In der Regel behandeln Sie dieses Ereignis, um den Textwert und die Auswahl zu aktualisieren, bevor der Text gerendert wird. Dadurch wird das Flimmern von Text verhindert, das auftreten kann, wenn Text schnell gerendert, aktualisiert und erneut gerendert wird.

Hinweis

Dies ist ein synchrones Ereignis, das zu Zeiten auftreten kann, wenn Änderungen an der visuellen XAML-Struktur nicht zulässig sind, z. B. während des Layouts. Daher sollten Sie Code innerhalb des TextChanging-Ereignishandlers in erster Linie auf die Überprüfung und Aktualisierung der Text-Eigenschaft beschränken. Der Versuch, andere Aktionen auszuführen, z. B. das Anzeigen eines Popups oder das Hinzufügen/Entfernen von Elementen aus der visuellen Struktur, kann zu potenziell schwerwiegenden Fehlern führen, die zu einem Absturz führen können. Es wird empfohlen, diese anderen Änderungen entweder in einem TextChanged-Ereignishandler oder als separaten asynchronen Vorgang auszuführen.

Gilt für:

Weitere Informationen