ファイルを 1 行ずつ読み取り、文字列を 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);
すべてのラベルは Web ページを開く必要があり、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;
}
一部のラベルの背景は白に変わり、同じものは白に変わりません。