[英]Identify which textbox has fired a text changed event
我有許多通過代碼動態創建的文本框。
我希望能夠為所有文本框分配一個通用事件處理程序,以便更改文本,然后在處理程序中確定哪個文本框已觸發事件。
我的代碼是:
txtStringProperty.TextChanged += TextBoxValueChanged;
private void TextBoxValueChanged(object sender, RoutedEventArgs e)
{
string propertyName = // I would like the name attribute of the textbox here
}
如果您需要更多信息,請告訴我。
sender
參數包含觸發事件的控件。 您可以將其強制轉換為TextBox並從中獲取name屬性:
string propertyName = ((TextBox)sender).Name;
將object sender
(您觸發事件的文本框)轉換為TextBox
。
如果只有一個屬性是你想要的那么寫
string propertyName = ((TextBox)sender).Name;
但是當需要多個屬性時,最好創建一個Textbox變量並使用它。
TextBox txtbox = (TextBox)sender;
然后你可以使用它的任何屬性
string propertyName = txtbox.Name;
MessageBox.Show(proptertyName);
MessageBox.Show(txtbox.Content.ToString());
我的建議是在MSDN上查看基類層次結構,然后將控件轉換為它並提取在其上定義的屬性:
var name = ((ContentControl) sender).Name;
對於更通用的實現,這也是一種很好的做法,因為將其轉換為“TextBox”意味着您只能將處理邏輯應用於該類型的控件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.