You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取UniformGrid内动态创建的最后一个TextBox的值?

获取UniformGrid中最后一个TextBox的值的解决方案

嘿,我来帮你搞定这个问题!要拿到动态创建在UniformGrid里的最后一个TextBox的值,其实有几个简单直接的办法,我给你一一说明:

方法1:直接访问Children集合的最后一项

因为uniformGrid.Children是一个UIElementCollection,我们可以通过索引直接定位到最后一个元素,只需要注意把它转换成TextBox类型就行:

// 获取最后一个元素并转换为TextBox
var lastTextBox = uniformGrid.Children[uniformGrid.Children.Count - 1] as TextBox;
if (lastTextBox != null)
{
    string lastDateValue = lastTextBox.Text;
    // 在这里使用获取到的日期值即可
}

注意:这个方法适用于你确定UniformGrid的Children里全是TextBox的情况,如果有其他类型控件,转换可能会失败,所以一定要加null判断。

方法2:创建时直接保留最后一个TextBox的引用

如果在初始化的时候就知道后续要用到最后一个TextBox,那直接在循环里记录它的引用会更高效,不用事后再从集合里查找:

// 声明一个类级别的变量来保存最后一个TextBox的引用
private TextBox _lastDateTextBox;

public Window1() 
{
    InitializeComponent(); 
    for (var i = 0; i < 30; i++) 
    {
        var textBox = new TextBox 
        { 
            Width = 70, 
            Background = Brushes.Beige, 
            HorizontalContentAlignment = HorizontalAlignment.Center, 
            VerticalContentAlignment = VerticalAlignment.Center, 
            Height = 30, 
            Margin = new Thickness(3) 
        };
        uniformGrid.Children.Add(textBox);
        // 每次循环更新引用,最后就会保留最后一个TextBox的实例
        _lastDateTextBox = textBox;
    }
}

// 后续需要取值时直接使用
if (_lastDateTextBox != null)
{
    string lastDateValue = _lastDateTextBox.Text;
}

方法3:用LINQ筛选出最后一个TextBox

如果你的UniformGrid里可能混有其他类型的控件,用LINQ来筛选所有TextBox再取最后一个会更安全,不过记得先引用System.Linq命名空间:

using System.Linq;

// ...

// 筛选出所有TextBox并取最后一个(如果有的话)
var lastTextBox = uniformGrid.Children.OfType<TextBox>().LastOrDefault();
if (lastTextBox != null)
{
    string lastDateValue = lastTextBox.Text;
}

这几种方法各有适用场景,你可以根据自己的实际情况选择~

内容的提问来源于stack exchange,提问作者mhshojaee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:03:45