c# - 使动态创建的链接标签在 Winforms 中可点击

标签 c# winforms linklabel

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

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

然后我想捕获业务 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#但这并没有太大帮助

最佳答案

声明点击处理程序:

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);
}

关于c# - 使动态创建的链接标签在 Winforms 中可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19934186/

相关文章:

c# - 如何知道点击了什么Linklabel?

c# - 如何让 UI 线程等待信号量,但处理其他调度程序请求? (就像 MessageBox.Show 本身所做的那样)

c# 联合运算符

c# - 如何使用带有 `Immediate Effect` 的 C# .NET 更改全局 Windows 代理

vb.net - 如何从标题文本属性获取 DGV 列的设计 > 名称属性

winforms - 我可以在 Visual Studio 上使用 LinkLabel 链接到 Windows 窗体吗?

c# - 数据适配器和空值

c# - .Net 可折叠面板或可折叠链接控件

c# - 如何在 ContextMenuStrip 中设置默认菜单项?

C# 从另一个方法调用事件 (linkLabel2_LinkClicked)