动态创建 LinkLabel 及事件处理程序,该怎么解决
动态创建 LinkLabel 及事件处理程序
各位技术达人,小弟刚触及C#,还望举手之间帮个忙。
现在要动态创建几个 LinkLabel 及事件处理程序(点击它将弹出一个显示其Name 对话框)。可是在赋给它一个事件的时候,也就是在“???”的那个地方,“敲”不出 LinkClick (事件),请问要实现上述目的,该如何编写这段程序?
private LinkLabel[] LL = new LinkLabel[10];
private void Form1_Load(object sender, EventArgs e)
{
int a = 0;
int x = 0, y = 0;
for (a = 0; a <= 5; a++)
{
LL[a] = new LinkLabel();
LL[a].Text = "这是第" + a.ToString() + "LinkLabel";
LL[a].Width = panel1.Width / 3;
LL[a].Left = x * LL[a].Width;
LL[a].Height = panel1.Height / 10;
LL[a].Top = y * LL[a].Height;
LL[a].Name = "LL" + a.ToString();
panel1.Controls.Add(LL[a]);
panel1.Controls[a]. ??? += new LinkLabelLinkClickedEventHandler(this.ButtonArray_OnClick);
y++;
}
}
private void ButtonArray_OnClick(object sender, LinkLabelLinkClickedEventArgs e)
{
LinkLabelLinkClickedEventArgs arg = (LinkLabelLinkClickedEventArgs)e;
LinkLabel l_1 = (LinkLabel)sender;
if (arg.Button == MouseButtons.Left)
{
MessageBox.Show(l_1.Name.ToString());
}
}
------解决方案--------------------
各位技术达人,小弟刚触及C#,还望举手之间帮个忙。
现在要动态创建几个 LinkLabel 及事件处理程序(点击它将弹出一个显示其Name 对话框)。可是在赋给它一个事件的时候,也就是在“???”的那个地方,“敲”不出 LinkClick (事件),请问要实现上述目的,该如何编写这段程序?
private LinkLabel[] LL = new LinkLabel[10];
private void Form1_Load(object sender, EventArgs e)
{
int a = 0;
int x = 0, y = 0;
for (a = 0; a <= 5; a++)
{
LL[a] = new LinkLabel();
LL[a].Text = "这是第" + a.ToString() + "LinkLabel";
LL[a].Width = panel1.Width / 3;
LL[a].Left = x * LL[a].Width;
LL[a].Height = panel1.Height / 10;
LL[a].Top = y * LL[a].Height;
LL[a].Name = "LL" + a.ToString();
panel1.Controls.Add(LL[a]);
panel1.Controls[a]. ??? += new LinkLabelLinkClickedEventHandler(this.ButtonArray_OnClick);
y++;
}
}
private void ButtonArray_OnClick(object sender, LinkLabelLinkClickedEventArgs e)
{
LinkLabelLinkClickedEventArgs arg = (LinkLabelLinkClickedEventArgs)e;
LinkLabel l_1 = (LinkLabel)sender;
if (arg.Button == MouseButtons.Left)
{
MessageBox.Show(l_1.Name.ToString());
}
}
------解决方案--------------------
- C# code
((LinkLabel)panel1.Controls[a]). ??? += new LinkLabelLinkClickedEventHandler(this.ButtonArray_OnClick);
------解决方案--------------------
3楼正解,你必须先进行类型转换
------解决方案--------------------
private LinkLabel[] LL = new LinkLabel[10];
private void Form1_Load(object sender, EventArgs e)
{
int a = 0;
int x = 0, y = 0;
for (a = 0; a <= 5; a++)
{
LinkLabel laber = new LinkLabel();
laber .Text = "这是第" + a.ToString() + "LinkLabel";
///
////
laber.Onclick+=new LinkLabelLinkClickedEventHandler(this.ButtonArray_OnClick);
panel1.Controls.add(laber);
}
}
private void ButtonArray_OnClick(object sender, LinkLabelLinkClickedEventArgs e)
{
LinkLabelLinkClickedEventArgs arg = (LinkLabelLinkClickedEventArgs)e;
LinkLabel l_1 = (LinkLabel)sender;
if (arg.Button == MouseButtons.Left)
{
MessageBox.Show(l_1.Name.ToString());
}
}
------解决方案--------------------
- C# code
private LinkLabel[] LL = new LinkLabel[10]; private void Form1_Load(object sender, EventArgs e) { int a = 0; int x = 0, y = 0; for (a = 0; a <= 5; a++) { LL[a] = new LinkLabel(); LL[a].Text = "这是第" + a.ToString() + "LinkLabel"; LL[a].Width = panel1.Width / 3; LL[a].Left = x * LL[a].Width; LL[a].Height = panel1.Height / 10; LL[a].Top = y * LL[a].Height; LL[a].Name = "LL" + a.ToString(); LL[a].Onclick += new LinkLabelLinkClickedEventHandler(this.ButtonArray_OnClick); panel1.Controls.Add(LL[a]); y++; } } private void ButtonArray_OnClick(object sender, LinkLabelLinkClickedEventArgs e) { LinkLabelLinkClickedEventArgs arg = (LinkLabelLinkClickedEventArgs)e; LinkLabel l_1 = (LinkLabel)sender; if (arg.Button == MouseButtons.Left) { MessageBox.Show(l_1.Name.ToString()); } }