Моя проблема заключается в следующем:
У меня есть форма окна, в которой я поместил LayoutPanel, когда формы загружаются, в LayoutPanel добавляются несколько элементов управления, таких как: текстовые поля и метки.
Затем по нажатию кнопки мне нужно обработать данные, введенные пользователем на этих динамически создаваемых элементах управления. Для этой цели я использую Backgroundworker, который должен взять эти элементы управления и прочитать их данные.
Моя проблема заключается в том, что Backgroundworker не позволяет мне получить доступ к элементу управления из метода DoWork, но мне нужно сделать это таким образом, потому что я буду сообщать о ходе операций.
Вот части моего кода для пояснения концепции:
private void frmMyForm_Load(object sender, EventArgs e)
{
//I add multiple controls, this one is just for example
LayoutPanel1.add(TextBox1);
....
}
private void bgwBackground_DoWork(object sender, DoWorkEventArgs e)
{
foreach (Control controlOut in LayoutPanel1.Controls)
{
//do some stuff, this one is just for example
string myString = controlOut.Name; //-> Here is the error, cant access controls from different Thread.
}
}
Задать текст просто, используя делегата, но как насчет получения всего родительского элемента управления для управления дочерними элементами управления (просто для получения информации, я не хочу задавать какие-либо данные, просто нужно получить имя, текст, вещи вот так).
Надеюсь, я все прояснил, спасибо всем.