我有一个程序可以逐行读取文件,并将字符串放在 tableLayoutPanel 中,但是如何为 tableLayoutPanel 中的每个标签创建一个 eventHandler?
这是我正在使用的代码:
Label label = new Label();
label.Name = "MyNewLabel";
label.ForeColor = Color.Red;
label.Text = line;
tableLayoutPanel1.RowCount++;
tableLayoutPanel1.RowStyles.Add(new RowStyle());
tableLayoutPanel1.Controls.Add(label, 0, tableLayoutPanel1.RowCount + 1);
每个标签都需要打开一个网页,并且 url 必须是它自己的文本。
我已经尝试过这个:
foreach (Control x in panel1.Controls)
{
label.Click += HandleClick;
}
和
private void HandleClick(object sender, EventArgs e)
{
messageBox.Show("Hello World!");
}
它只是行不通。
新问题:
主要问题由 Jay Walker 解决,但现在我有另一个问题。并非所有标签都与 eventHandler 一起使用。这是主要代码:
string line;
System.IO.StreamReader file = new System.IO.StreamReader("research.dat");
while ((line = file.ReadLine()) != null)
{
Label label = new Label();
label.Name = "MyNewLabel";
label.ForeColor = Color.Red;
label.Text = line;
label.Click += HandleClick;
tableLayoutPanel1.RowCount++;
tableLayoutPanel1.RowStyles.Add(new RowStyle());
tableLayoutPanel1.Controls.Add(label, 0, tableLayoutPanel1.RowCount + 1);
}
结合:
private void HandleClick(object sender, EventArgs e)
{
((Control)sender).BackColor = Color.White;
}
一些标签背景变为白色,而相同的则不会。