读书人

动态生成LinkLabel,该怎么解决

发布时间: 2012-05-31 12:19:24 作者: rapoo

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

读书人网 >C#

热点推荐