如何获取动态创建的最后一个文本框的值

时间:2018-04-08 22:18:23

标签: c# wpf textbox children

此代码动态创建一些文本框。 如何获得' last' UniformGrid中的文本框? 网络搜索没有取得好成绩!

非常感谢

       public Window1()
        {
            InitializeComponent();    
            for (var i = 0; i < 30; i++)
            {
                uniformGrid.Children.Add(new TextBox
                {
                    Width = 70,
                    Background = Brushes.Beige,
                    HorizontalContentAlignment = HorizontalAlignment.Center,
                    VerticalContentAlignment = VerticalAlignment.Center,
                    Height = 30,                        
                    Margin = new Thickness(3)
                });
            }            
        }

文本框包含日期,我想获取最后一个文本框值,并在按钮事件的新文本框中显示。

private void datePicker_SelectedDateChanged(object sender, RoutedEventArgs e)
        {
            DateTime a = DateTime.Parse(datePicker.Text);
            foreach (Control c in uniformGrid.Children)
            {
                TextBox textbox = c as TextBox;
                if (textbox != null)
                {
                    textbox.Text = a.ToString();
                    a = a.AddDays(1);
                }                
            }
        }


private void button_Click(object sender, RoutedEventArgs e)
{
lasttextBox =...
}

1 个答案:

答案 0 :(得分:1)

最后一个TextBox将是您添加的最后一个,因此是Children集合中的最高索引值。

int lastIndex = uniformGrid.Children.Count - 1;
var lastBox = (TextBox)uniformGrid.Children[lastIndex];

ResultTextBox.Text = lastBox.Text;

如果你有其他控件,那么你只需要枚举文本框(你甚至可以保存结果,因为你在 {中进行了枚举{1}} 事件处理程序)。

SelectedDateChanged