动态生成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);
}