动态生成的LinkLabels - 将唯一信息传递给处理程序

时间:2016-03-24 19:34:02

标签: c# linklabel

我想做什么: 生成一个可点击链接列表,当您单击它们时,它们会在它们旁边显示一个更详细的窗口。

我无法弄清楚如何在点击后识别LinkLabel。

到目前为止,这是我的代码:

if (reader.HasRows)
        {
            lore_output_panel.Controls.Clear();
            string lore_search_returns = "";
            int i = 0;
            LinkLabel[] itemfound = new LinkLabel[20];
            while (reader.Read() && i < 20)
            {
                itemfound[i] = new LinkLabel();
                itemfound[i].Text = reader["name"].ToString();
                Point p = new Point(0, 0 + (15 * i));
                itemfound[i].Location = p;
                itemfound[i].Visible = true;
                itemfound[i].AutoSize = true;
                itemfound[i].Show();
                itemfound[i].Name = "loreitem" + i;
                itemfound[i].LinkClicked += new LinkLabelLinkClickedEventHandler(this.linkClicked);
                lore_output_panel.Controls.Add(itemfound[i]);
                i++;
                //lore_search_returns += reader["name"] + "\r\n";
            }
            lore_output.Text = lore_search_returns;
        }
        else
        {
            lore_output.Text = "ITEM NOT FOUND\r\n" + sql;
        }
        m_dbConnection.Close();
    }
    private void linkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        string testname = this.Name;
        MessageBox.Show(testname);
    }

使用此代码,单击链接时,它只显示表单的名称。我需要某种独特的标识符来点击,以便我可以识别点击了哪个链接标签。有没有办法传递我点击通过点击事件处理程序的链接标签的名称?

我觉得它可能与标签有关(如此链接所示)Making dynamically created linklabels clickable in Winforms但我不明白。

1 个答案:

答案 0 :(得分:0)

您将表格发件人混淆为实际的linkLabel。您可以将发件人转换为linkLabel,然后访问其名称,而无需使用tag属性,该属性也可以保存附加数据。

e.g。

private void linkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    string testname = ((LinkLabel)sender).Name;
    MessageBox.Show(testname)
}