TextBox.TextChanging Ereignis

Definition

Tritt synchron auf, wenn sich der Text im Textfeld ändert, 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 einfaches autovervollständigen 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 (aber nicht in der Benutzeroberfläche gerendert). Normalerweise behandeln Sie dieses Ereignis, um den Textwert und die Textauswahl zu aktualisieren, bevor der Text gerendert wird. Dadurch wird verhindert, dass der Text flackert, der auftreten kann, wenn Text gerendert, aktualisiert und schnell erneut gerendert wird.

Hinweis

Dies ist ein synchrones Ereignis, das manchmal auftreten kann, wenn Änderungen an der visuellen XAML-Struktur nicht zulässig sind, z. B. während des Layouts. Daher sollten Sie Code im TextChanging-Ereignishandler in erster Linie auf das Überprüfen und Aktualisieren der Text-Eigenschaft beschränken. Wenn Sie versuchen, andere Aktionen auszuführen, z. B. das Anzeigen eines Popups oder das Hinzufügen/Entfernen von Elementen aus der visuellen Struktur, kann potenziell schwerwiegende Fehler verursachen, die zu einem Absturz führen können. Es wird empfohlen, diese anderen Änderungen entweder in einem TextChanged-Ereignishandler auszuführen oder als separate asynchrone Operation auszuführen.

Gilt für:

Weitere Informationen