4

コードを介して動的に作成されるテキスト ボックスが多数あります。

変更されたテキストのすべてのテキストボックスに汎用イベントハンドラーを割り当ててから、ハンドラー内でどのテキストボックスがイベントを発生させたかを判断できるようにしたいと考えています。

私が持っているコードは次のとおりです。

txtStringProperty.TextChanged += TextBoxValueChanged;

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

さらに情報が必要な場合はお知らせください。

4

3 に答える 3

7

senderパラメータには、イベントを発生させたコントロールが含まれます。それを TextBox にキャストして、そこから name プロパティを取得できます。

string propertyName = ((TextBox)sender).Name;
于 2012-05-14T13:00:34.370 に答える
2

object sender(イベントを発生させたテキストボックス) を にキャストしますTextBox

必要なプロパティが1つだけの場合は、次のように記述します

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

ただし、複数のプロパティが必要な場合は、Textbox 変数を作成して同様に使用することをお勧めします。

TextBox txtbox =  (TextBox)sender;

次に、次のような任意のプロパティを使用できます

string propertyName = txtbox.Name; 

MessageBox.Show(proptertyName);
MessageBox.Show(txtbox.Content.ToString());
于 2012-05-14T13:01:14.323 に答える
0

私のアドバイスは、MSDNの基本クラス階層を見て 、コントロールをそれにキャストし、それに定義されているプロパティを抽出することです。

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

これは、「TextBox」にキャストすると、そのタイプのコントロールにのみ処理ロジックを適用できることを意味するため、より一般的な実装の良い方法でもあります。

于 2015-02-24T09:59:07.433 に答える