Как извлечь текст из созданного программно элемента Textbox в WPF с использованием C#?

Конечно, давайте поменяем формулировку вопроса для ясности: Как получить содержимое TextBox, который создается динамически при нажатии на кнопку в WPF? Желаемое поведение состоит в том, чтобы получить текст из каждого созданного TextBox в StackPanel и, возможно, отобразить его или использовать для других целей. Каким образом можно достичь этого, учитывая создание элементов TextBox программно без присвоения им имен?
  • 12 марта 2024 г. 12:29
Ответы на вопрос 2
Для получения содержимого TextBox, который создается динамически программно, можно воспользоваться обработчиком события при нажатии на кнопку. Ниже приведен пример кода на C#, который демонстрирует этот подход:

```c#
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace DynamicTextBoxes
{
    public partial class MainWindow : Window
    {
        private StackPanel stackPanel;

        public MainWindow()
        {
            InitializeComponent();
            stackPanel = new StackPanel();
            Content = stackPanel;

            Button createButton = new Button();
            createButton.Content = "Create TextBox";
            createButton.Click += CreateButton_Click;
            stackPanel.Children.Add(createButton);
        }

        private void CreateButton_Click(object sender, RoutedEventArgs e)
        {
            TextBox textBox = new TextBox();
            textBox.Text = "Enter text here";
            stackPanel.Children.Add(textBox);

            Button getTextButton = new Button();
            getTextButton.Content = "Get Text";
            getTextButton.Click += (s, ev) =>
            {
                string text = textBox.Text;
                MessageBox.Show(text);
            };
            stackPanel.Children.Add(getTextButton);
        }
    }
}
```

В приведенном коде при нажатии на кнопку "Create TextBox" создается новый TextBox и кнопка "Get Text" для каждого TextBox. При нажатии на кнопку "Get Text" выводится содержимое соответствующего TextBox в MessageBox.

Таким образом, можно динамически создавать TextBox и получать их содержимое при необходимости.
Эти TextBox как-то появляются. Причем они появляются динамически, т.е. создаются из кода. 
Поэтому когда создаешь новые TextBox, то сохраняй их в какое-нибудь поле (например, List<TextBox> ) и работай с ними через это поле.
Похожие вопросы