我在Visual Studio中有两个关于C#的快速简单的问题。首先,是否有类似标签的东西,但对于程序中的文本区域?我希望在我的程序中有多行文本,但只能使用带有wordwrap的DotNetBar标签来完成它。
第二,有没有办法在不使用链接标签的情况下在文本中间添加超链接?如果我想生成“可以更新,请访问http://example.com以下载它!”这样的文字,是否可以使链接无法在文本中间放置链接标签而点击?
答案 0 :(得分:4)
//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),然后使用Process.Start启动URL。
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);
}
答案 1 :(得分:2)
您可以尝试RichTextBox
控制。
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);
};
答案 2 :(得分:1)
您可以使用普通标签并将AutoSize
属性设为false。
然后调整你的宽度和高度它将自己包裹
答案 3 :(得分:0)
我假设您正在使用Windows应用程序,而不是Web应用程序。
在C#中,您可以通过将其拖放到表单上来创建普通文本框,将其属性更改为多行,并将其设置为只读。这就是我一直以来做的事情。
至于在没有链接标签的情况下添加文本链接。有一种方法可以添加文本框的链接。您可以在http://www.codeproject.com/KB/miscctrl/LinkTextBox.aspx/
查看相当不错的教程