Да, хотя это не так, что я могу сказать, чтобы сделать это непосредственно из конструктора, но это легко управлять с помощью кода:
var linkLabel = new LinkLabel();
linkLabel.Text = "(Link 1) and (Link 2)";
linkLabel.Links.Add(1, 6, "Link data 1");
linkLabel.Links.Add(14, 6, "Link data 2");
linkLabel.LinkClicked += (s, e) => Console.WriteLine(e.Link.LinkData);
В основном Links коллекции на этикетке может разместите кучу ссылок в LinkLabel
. Событие LinkClicked
содержит ссылку на конкретную ссылку, которая была нажата, чтобы вы могли, среди прочего, получить доступ к данным о ссылках, связанным с этой ссылкой.
Дизайнер предоставляет только объект LinkArea
, который по умолчанию включает весь текст LinkLabel
. Первый Link
, который вы добавляете в коллекцию Links
, автоматически изменит свойство LinkArea
, чтобы отобразить первую ссылку в коллекции.
Что-то немного ближе к тому, что вы спрашиваете, будет выглядеть следующим образом:
var addresses = new List<string> {
"http://www.example.com/page1",
"http://www.example.com/page2",
"http://www.example.com/page3",
};
var stringBuilder = new StringBuilder();
var links = new List<LinkLabel.Link>();
foreach (var address in addresses)
{
if (stringBuilder.Length > 0) stringBuilder.AppendLine();
// We cannot add the new LinkLabel.Link to the LinkLabel yet because
// there is no text in the label yet, so the label will complain about
// the link location being out of range. So we'll temporarily store
// the links in a collection and add them later.
links.Add(new LinkLabel.Link(stringBuilder.Length, address.Length, address));
stringBuilder.Append(address);
}
var linkLabel = new LinkLabel();
// We must set the text before we add the links.
linkLabel.Text = stringBuilder.ToString();
foreach (var link in links)
{
linkLabel.Links.Add(link);
}
linkLabel.AutoSize = true;
linkLabel.LinkClicked += (s, e) => {
System.Diagnostics.Process.Start((string)e.Link.LinkData);
};
Я прилагаю сам URL, как LinkData
к так что я могу извлечь Линк я создаю в цикле это как строка при запуске события LinkClicked
.
Возможный дубликат [Link Labels C# - отображение их списка] (http://stackoverflow.com/questions/4712191/link-labels-c-sharp-displaying-a-list-of-them) – MethodMan
@ MethodMan Это не дубликат этого вопроса. Этот вопрос связан с добавлением нескольких элементов управления LinkLabel к другому элементу управления. Это связано с добавлением нескольких ссылок на один «LinkLabel», который не упоминается нигде в связанном вопросе. – Anthony