日期:2014-05-18  浏览次数:20771 次

动态创建 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# 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 Link