简体   繁体   中英

Identify which textbox has fired a text changed event

I have a number of text boxes that are dynamically created via code.

I would like to be able to assign a generic event handler to all the textboxes for the text changed even and then within the handler determine which text box has fired the event.

Code I have is:

txtStringProperty.TextChanged += TextBoxValueChanged;

private void TextBoxValueChanged(object sender, RoutedEventArgs e)
{
    string propertyName = // I would like the name attribute of the textbox here
}

Please let me know if you require anymore information.

The sender parameter contains which control has fired the event. You can cast it to a TextBox and get the name property from it:

string propertyName = ((TextBox)sender).Name;

Cast object sender (your textbox which fired event) to TextBox .

If only one property is what you want then write

string propertyName = ((TextBox)sender).Name; 

But when more than one property is required, then it is better to create a Textbox variable and use it like.

TextBox txtbox =  (TextBox)sender;

Then you can use any property of it like

string propertyName = txtbox.Name; 

MessageBox.Show(proptertyName);
MessageBox.Show(txtbox.Content.ToString());

My advice is to look at the base class hierarchy at MSDN and just cast the control to it and extract the properties defined on it:

var name = ((ContentControl) sender).Name;

this is also a good practice for a more generic implementation because casting it to 'TextBox' means you can apply the handling logic to that type of control only.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM