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

动态生成LinkLabel
我想根据保存在HashTable里的数值的数量自动生成相应数量的LinkLabel,key的值为新生成控件的Text,Value的值则传到LinkClicked事件
请问如何将 value=ht[listKeys[i].ToString()] 赋值在LinkLabel的对象linklbl里,才能在新生成的控件的LinkClicked事件中使用,或者有其他方法的请告知……

C# code

LinkLabel linklbl;
ArrayList listKeys = new ArrayList();
HashTable ht; //……假设有一堆
foreach (Object key in ht.Keys)
{
    listKeys.Add((string)key);
}
for (int i = 0; i < ht.Count; i++)
{
    linklbl = new LinkLabel();
    linklbl.Name = "lkl" + i.ToString();
    linklbl.Text = listKeys[i].ToString();
    linklbl.LinkClicked += new LinkLabelLinkClickedEventHandler(LinkClicked);
    
    this.Controls.Add(linklbl);
}
private void LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    WinExec(?, 1);
}



------解决方案--------------------
自定义用户控件,里面放置一个linklabel,然后在自定义的控件中添加你的value属性字段。这样每动态生成一个自定义的linklabel,就赋值他的value属性,这样就保证每个控件的value值都不同了。而且你可以用同一个事件注册你循环产生的控件,只是在click事件中,通过value值来给出不同的响应
------解决方案--------------------
private void LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
LinkLabel linklbl=(LinkLabel)sender;
linklbl.text=..
后面的自己写吧

WinExec(?, 1);
}