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

C# 动态生成的LinkLabels-将唯一信息传递给处理程序,c#,linklabel,C#,Linklabel,我想做的是: 生成一个可单击链接列表,当您单击它们时,它们会在旁边显示一个关于它们的更详细窗口 我搞不懂的是如何在点击链接标签后识别它 以下是我目前的代码: if (reader.HasRows) { lore_output_panel.Controls.Clear(); string lore_search_returns = ""; int i = 0; LinkLabel[] i

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

我搞不懂的是如何在点击链接标签后识别它

以下是我目前的代码:

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);
    }
if(reader.HasRows)
{
lore_output_panel.Controls.Clear();
字符串lore_search_returns=“”;
int i=0;
LinkLabel[]itemfound=新的LinkLabel[20];
while(reader.Read()&&i<20)
{
itemfound[i]=新链接标签();
itemfound[i]。Text=reader[“name”]。ToString();
点p=新点(0,0+(15*i));
itemfound[i]。位置=p;
itemfound[i]。Visible=true;
itemfound[i]。自动大小=true;
itemfound[i].Show();
itemfound[i].Name=“loreitem”+i;
itemfound[i].LinkClicked+=新的LinkLabelLinkClickedEventHandler(此.LinkClicked);
lore_output_panel.Controls.Add(itemfound[i]);
i++;
//知识搜索返回+=读取器[“名称”]+“\r\n”;
}
lore_output.Text=lore_search_返回;
}
其他的
{
lore_output.Text=“未找到项\r\n”+sql;
}
m_dbConnection.Close();
}
私有无效链接已单击(对象发送者,链接标签链接已单击目标)
{
string testname=this.Name;
Show(testname);
}
使用此代码,单击链接时,只显示表单的名称。我需要一些独特的标识符来通过点击,这样我就可以确定哪个链接标签被点击。是否有方法通过单击事件处理程序传递我单击的链接标签的名称

我有一种感觉,这可能与标签有关(如本链接所示),但我不明白。

您将表单与实际链接标签混淆了。您可以将发件人强制转换为linkLabel,然后访问其名称,而无需使用tag属性,该属性还可以保存其他数据

e、 g

您将此表单与实际的链接标签混淆。您可以将发件人强制转换为linkLabel,然后访问其名称,而无需使用tag属性,该属性还可以保存其他数据

e、 g


string testName=((LinkLabel)sender).Name谢谢!有没有办法将您的评论标记为答案?
string testName=((LinkLabel)sender).Name谢谢!有没有办法将你的评论标记为答案?
private void linkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    string testname = ((LinkLabel)sender).Name;
    MessageBox.Show(testname)
}