在Winforms中可以创建动态创建的链接标签

时间:2013-11-12 16:11:11

标签: c# winforms linklabel

我正在制作一个程序,允许用户点击动态链接标签创建的商家名称。

在想知道如何做到这一点之前,我从未在C#中使用过链接标签。可以为partucular用户生成的业务数量各不相同,因此每个用户的链接标签数量不同。

然后我想捕获业务ID以进行Json调用。

我填写商家名称的代码

// fill in the business names as linked labels
if (GlobalClass.Businesses != null)
{
     tableLayoutPanel.Controls.Clear();                     

     foreach (var business in GlobalClass.Businesses)
     {
          tableLayoutPanel.Controls.Add(new LinkLabel { Text = business.businessName.ToString() });
     }
}

业务类看起来像这样,上面的业务是一个列表。

public class Business
{
    public string businessID { get; set; }
    public string businessName { get; set; }
}

如果要点击商家名称来捕获商家ID,我需要做什么?

我看过Dynamically creating Link Labels using foreach in c#,但没有多大帮助

2 个答案:

答案 0 :(得分:4)

声明点击处理程序:

private void MyLinkClick(object sender, ...)
{
    var linkLabel = (LinkLabel) sender;
    var business = (Business) linkLabel.Tag;
    /* do something with business */
}

改变你的foreach:

foreach (var business in GlobalClass.Businesses)
{
     var linkLabel = new LinkLabel { Text = business.businessName.ToString(), Tag = business };
     linkLabel.Click += MyLinkClick;
     tableLayoutPanel.Controls.Add(linkLabel);
}

答案 1 :(得分:1)

Tag的{​​{1}}属性设置为等于LinkLabel属性的business.businessID属性。 为LinkLabel添加处理程序,在点击该项目时,将sender投射到LinkLabel并访问Tag媒体资源。