【问题标题】:How to I grab the text of numbered Textboxes dynamically in WPF?如何在 WPF 中动态获取编号文本框的文本?
【发布时间】:2022-06-10 20:02:00
【问题描述】:

我正在创建一个联系人添加,并且我想添加添加多个电话号码的选项。 我允许创建更多文本框供用户使用此按钮添加数字:

        private void AddPhoneNumberButton_Click(object sender, RoutedEventArgs e)
        {
            int numberOfTextBoxes = PhoneNumberStackPanel.Children.OfType<TextBox>().Count();

            TextBox txtbox = new TextBox();
            txtbox.Name = $"PhoneNumberTextBox{numberOfTextBoxes}";
            txtbox.Width = 200;
            txtbox.Background = Brushes.White;
            txtbox.Margin = new Thickness(0,10,0,0);
            PhoneNumberStackPanel.Children.Add(txtbox);
        }

现在我如何动态引用这些文本框。就像我想用这个循环抓取这些文本框中的所有文本一样:

for ( int i = 0 ; i < PhoneNumberStackPanel.Children.OfType<TextBox>().Count() ; i++){}

【问题讨论】:

    标签: c# wpf visual-studio textbox


    【解决方案1】:

    使用foreach循环:

    foreach(TextBox tb in PhoneNumberStackPanel.Children.OfType<TextBox>())
    {
        string text = tb.Text;
    }
    

    还可以考虑将 StackPanel 替换为 ItemsControl

    private void AddPhoneNumberButton_Click(object sender, RoutedEventArgs e)
    {
        int numberOfTextBoxes = PhoneNumberItemsControl.Items.Count;
    
        TextBox txtbox = new TextBox();
        txtbox.Name = $"PhoneNumberTextBox{numberOfTextBoxes}";
        txtbox.Width = 200;
        txtbox.Background = Brushes.White;
        txtbox.Margin = new Thickness(0,10,0,0);
        PhoneNumberItemsControl.Items.Add(txtbox);
    }
    
    foreach(TextBox tb in PhoneNumberItemsControl.Items.OfType<TextBox>())
    {
    }
    

    您可以进行的下一步是将文本框移动到ItemsControl.ItemTemplate。 (一旦您需要比单个元素更复杂的视觉结构,它就成为“必须做的事情”)

    【讨论】:

    • 非常感谢!我不知道为什么我如此专注于使用忽略了更简单解决方案的名称!我也会改成ItemControl。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    相关资源
    最近更新 更多