动态生成的 LinkLabels - 将唯一信息传递给处理程序
Dynamic Generated LinkLabels - passing unique information to the handler
我想做什么:
生成可点击的 link 列表,当您点击它们时,它们会在它们旁边显示更详细的 window 信息。
我想不通的是点击后如何识别 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);
}
使用此代码,单击 link 时,它只显示表单的名称。我需要某种唯一标识符才能在点击时通过,以便我可以识别点击了哪个 link 标签。有没有办法通过单击事件处理程序传递我单击的 link 标签的名称?
我觉得这可能与标签有关(如此 link 所见)Making dynamically created linklabels clickable in Winforms 但我不明白。
您混淆了这个 表单 和 发件人 实际的链接标签。您可以将发件人转换为 linkLabel,然后访问其名称而无需求助于标签 属性,该标签还可以保存其他数据。
例如
private void linkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
string testname = ((LinkLabel)sender).Name;
MessageBox.Show(testname)
}
我想做什么: 生成可点击的 link 列表,当您点击它们时,它们会在它们旁边显示更详细的 window 信息。
我想不通的是点击后如何识别 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);
}
使用此代码,单击 link 时,它只显示表单的名称。我需要某种唯一标识符才能在点击时通过,以便我可以识别点击了哪个 link 标签。有没有办法通过单击事件处理程序传递我单击的 link 标签的名称?
我觉得这可能与标签有关(如此 link 所见)Making dynamically created linklabels clickable in Winforms 但我不明白。
您混淆了这个 表单 和 发件人 实际的链接标签。您可以将发件人转换为 linkLabel,然后访问其名称而无需求助于标签 属性,该标签还可以保存其他数据。
例如
private void linkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
string testname = ((LinkLabel)sender).Name;
MessageBox.Show(testname)
}