c#在用户控件上绘制linklabel

问题描述:

我在设计一个UserControl,它将包含linklabel的列表。事情是这样的:c#在用户控件上绘制linklabel

public class ItemControl : LinkLabel {} 

public class ItemsControl : UserControl 
{ 
    private readonly List<ItemControl> items; 

    public TaskBox() 
    { 
     this.items = new List<ItemControl>(); 
    } 

    public List<ItemControl> Items 
    { 
     get { return this.items; } 
    } 
} 

但我怎么能借鉴UserControl的项目,一旦我把它们添加到列表中?另外我怎样才能在代码中添加点击事件给他们?

你可以把一个FlowLayoutPanel控制你的ItemsControl和使用下面的代码来绘制ItemControl s到它:

foreach (var item in this.Items) 
{ 
     flowLayoutPanel1.Controls.Add(item); 
     item.LinkClicked += item_LinkClicked; 
} 

void item_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
{ 
     MessageBox.Show(((item)sender).Name); 
} 

使用FlowLayaoutPanel是任意的,但如果你不使用FlowLayoutPanel,你可以把每个LinkItem直接在您的UserControl上,并且必须自己管理每个LinkItem位置。