c#在usercontrol上绘制linklabel

时间:2014-10-19 10:24:31

标签: c# winforms user-controls

我正在设计一个UserControl,其中包含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上绘制项目?另外,如何在代码中将单击的事件添加到它们中?

1 个答案:

答案 0 :(得分:0)

您可以在FlowLayoutPanel上添加ItemsControl控件并使用以下代码将ItemControl绘制到其中:

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 {{1}} 1}}位置,你自己。