簡體   English   中英

確定哪個文本框已觸發文本更改事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM