Текстовые области и гиперссылки? - PullRequest
4 голосов
/ 01 января 2012

У меня есть два простых вопроса о C # в Visual Studio.Во-первых, есть ли что-то похожее на метку, но для области текста в программе?Я хотел бы, чтобы в моей программе было несколько строк текста, но, похоже, это можно сделать только с помощью метки DotNetBar с включенной переносом слов.

Во-вторых, есть ли способ разместить гиперссылку в середине текста, не используя метку ссылки?Если я хотел сгенерировать текст типа «Доступно обновление, перейдите на страницу http://example.com, чтобы загрузить его!», Возможно ли сделать ссылку кликабельной без необходимости размещать метку ссылки в середине текста?

Ответы [ 4 ]

4 голосов
/ 01 января 2012

Вы можете использовать LinkLabel и установить его LinkArea свойство:

 //LinkArea (start index, length)
 myLinkLabel.LinkArea = new LinkArea(37, 18);
 myLinkLabel.Text = "An update is available, please visit http://example.com to download it!";

Приведенное выше сделает ссылку http://example.com, а остальная часть текста в обычном режиме.

Изменить, чтобы ответить на комментарий: Существуют различные способы обработки ссылки. Один из способов - дать ссылку на описание (URL), а затем запустить URL с помощью Process.Start.

myLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(37, 18);
myLinkLabel.LinkClicked += new LinkLabelLinkClickedEventHandler(myLinkLabel_LinkClicked);
myLinkLabel.Text = "An update is available, please visit http://example.com to download it!";       
myLinkLabel.Links[0].Description = "http://example.com";

А обработчик событий может прочитать описание и запустить сайт:

void myLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    Process.Start(e.Link.Description);
}
2 голосов
/ 01 января 2012

Вы можете попробовать RichTextBox control.

string text = "This is the extract of text located at http://www.google.com and http://www.yahoo.com";
richTextBox1.Text   = text;

richTextBox1.ReadOnly = true;
richTextBox1.LinkClicked += (sa, ea) =>
{
 System.Diagnostics.Process.Start(ea.LinkText);
};
1 голос
/ 01 января 2012

Вы можете использовать нормальную метку и установить для свойства AutoSize значение false.А затем отрегулируйте свою ширину и высоту, она обернется самостоятельно

0 голосов
/ 01 января 2012

Я предполагаю, что вы используете приложение для Windows, а не веб-приложение.

В C # вы можете создать обычное текстовое поле, перетаскивая его на форму, изменить его свойство на многострочное и сделать его доступным только для чтения. Это то, что я всегда делаю.

Что касается добавления ссылки к тексту без ссылки. Есть способ добавить ссылки в текстовые поля. Вы можете проверить довольно хороший учебник на http://www.codeproject.com/KB/miscctrl/LinkTextBox.aspx/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...