C# TextChanged

Lightning bolt

TextChanged is an event. It occurs when the text is modified in a TextBox. With it we make a program dependent on the value of a TextBox when the user types. When the text in a TextBox is changed, we look up something in a database and display instantly the results.

Tip: Use TextChanged with logical tests to make your program responsive and reactive to your users' actions.

Get started

First, there are two easy ways to make a TextChanged event, or any Windows Forms event, in Visual Studio. First we note the easiest way to use TextChanged events, and after that we demonstrate a manual way. To make a new TextChanged event, open Visual Studio follow these steps.

Steps

TextChanged event steps. Click on your TextBox. You need to click on the TextBox and focus it to see the correct designer UI. On the right bottom, you should see the Properties pane. Look for the lightning bolt icon in the pane. After you find the lightning bolt, click on it. Scroll down to where the word TextChanged appears, and then double-click in the white space next to the TextChanged label.

Add TextChanged

Here we mention that the other way to use TextChanged is to type the word "this.TextChanged +" into your form and then press tab twice. This is an alternative to the previously shown way, and its drawback is that it can clutter your C# file you are working with, but it can also allow some different programming techniques.

Press TAB twice after typing [C#]

// This is the manual way, which is an alternative to the first way.
// Type 'this.TextChanged += ' into your form's constructor.
// Then press TAB twice, and you will have a new event handler.
this.TextChanged += new EventHandler(Form1_TextChanged);

Text example

Here we see how you can actually use TextChanged to automate changes in your program's UI. Let's say you want to show search results as the user types in a search box. Get the TextChanged event set up, and then we will use the Text property to show search results.

Fragment that uses Text property in TextChanged [C#]

void textBox1_TextChanged(object sender, EventArgs e)
{
    PopulateGrid(textBox1.Text);
}

void PopulateGrid(string queryStr)
{
    dataGridView1.DataSource = _journal.GetSearchResults(queryStr);
    SetStatus(dataGridView1.Rows.Count); // Change status bar (not shown)
}

Next steps. You can modify aspects of the program with TextChanged. All of this code is custom and the functions must be defined by you. You can see an example of what you can do when TextChanged is triggered. We use the new TextChanged Text value and call a custom function that manages more aspects of the interface.

Enabled example

Here we see that you can have a method that will toggle the Enabled property of various buttons in the form, such as OK and Cancel, depending on whether any items were found. We emphasize here that you can tie the Enabled property to an expression so that it is always accurate.

Fragment that changes Enabled property on TextChanged [C#]

void textBox1_TextChanged(object sender, EventArgs e)
{
    // Just something you may want to do after TextChanged.
    openButton.Enabled = TextIsValid(textBox1.Text);
}

Trigger conditions

TextChanged is triggered when the user types something into a TextBox, and the resulting value is different. It is also activated when the program itself changes the TextBox Text in code—and the resulting value is different. The runtime filters out modifications that don't result in a different Text value.

Synchronization

Programming tip

I recommend using TextChanged when you need to synchronize parts of the UI. together with a Text value. The final code block in this article illustrates how you can run more complex methods when the TextChanged event fires, like retrieving data from a database. For displaying instant search results from a database, this event is ideal.

Summary

Here we looked at the TextChanged event in Windows Forms. TextChanged is a powerful and convenient way to automate interactive messages in your application. Users appreciate it when they press a key and the program responds instantly.

Windows Forms
.NET