首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

动态创建 LinkLabel 及事件处理程序,该怎么解决

2012-02-03 
动态创建 LinkLabel 及事件处理程序各位技术达人,小弟刚触及C#,还望举手之间帮个忙。现在要动态创建几个 Li

动态创建 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 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());             }                 } 

热点排行