动态获取文本框的名称

时间:2012-06-02 10:10:43

标签: c# wpf silverlight expression-blend-4

private void txt_f_name_TextChanged(object sender, TextChangedEventArgs e)
{
    string textbox_name_1,textbox_name_2;            

    TextBox textbox_1 = (TextBox)e.Source;
    textbox_name1= textbox_1.Text;

    TextBox textbox_2 = (TextBox)e.OriginalSource;
    textbox_name_2;= textbox_2.Text;            
}

现在textbox_name_1textbox_name_2的结果都相同。

如果我试图获得另一种东西,比如文本,等等......这些也会得到相同的结果......

但我认为可能会有所不同。

所以,我想知道e.sourcee.OriginalSource之间的主要区别。

2 个答案:

答案 0 :(得分:0)

有些情况源和原始来源不同。

  

可以调整源的常见情况包括内容元素   在控件的内容模型中(列表项的内容,用于   实例,将报告列表项元素作为源和   列表项中的实际元素将是OriginalSource。

来自MSDN

我不确定你尝试用你的代码做什么。检查源和原始源文本属性如下所示,您可以通过添加带有文本框的项目的列表视图来执行相同的操作。

private void txt_f_name_TextChanged(object sender, TextChangedEventArgs e)
{
    string textbox_name_1,textbox_name_2;            

    TextBox textbox_1 = (TextBox)e.Source;
    textbox_name1= textbox_1.Text;

    TextBox textbox_2 = (TextBox)e.OriginalSource;
    textbox_name_2 = textbox_2.Text;            
}

答案 1 :(得分:0)

来自文档

此originalsource属性在调用类事件处理程序或任何实例处理程序之前获取其值一次,并且在此之后永远不会调整。

对于路由事件,其他事件可能在处理程序之前触发。

[OriginalSourece] [1] http://msdn.microsoft.com/en-us/library/system.windows.routedeventargs.originalsource.aspx