#c# #winforms
#c# #winforms
Вопрос:
Я создаю Label
динамическую форму в своей форме Windows следующим образом:
for (int i = 0; i < 3; i )
{
tableLayoutPanel1.Controls.Add(new Label() {
Text = dr["name"].ToString(),
Name = string.Format("test_{0}", i)
}, 1, i);
}
теперь то, что у меня есть Button
в моей форме, когда я нажимаю на нее, я хочу, чтобы она отображала Text
в Label
:
private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show(test_1.Text); // <- Compile time error here
}
но он говорит, test_1
что не существует.
И я понимаю, почему, поскольку это сделано динамически; но возможно ли для меня добиться этого?
Комментарии:
1. Табличная панель. GetControlFromPosition()
2. Вы должны найти
Label
, напримерLabel myLabel = tableLayoutPanel1.Controls.Find("test_1", true).OfType<Label>().FirstOrDefault();
Ответ №1:
В случае создания среды Control
выполнения ( Label
в вашем случае) вы должны ее найти. Вы можете сделать это с помощью Linq:
using System.Linq;
...
private void button3_Click(object sender, EventArgs e)
{
Label testLabel = tableLayoutPanel1
.Controls
.Find("test_1", true)
.OfType<Label>()
.FirstOrDefault();
MessageBox.Show(testLabel?.Text ?? "Label not found");
}
Комментарии:
1. tableLayoutPanel1. Элементы управления [«test_1»].Text