2012-01-01 80 views
4

我在Visual Studio中有兩個關於C#的簡單快速問題。首先,是否有類似標籤的內容,但對於程序中的文本區域?我想在我的程序中有多行文本,但似乎只能在打開WordWrap的DotNetBar標籤上完成。文字區域和超鏈接?

其次,有沒有辦法在文本中間有一個超鏈接而不使用鏈接標籤?如果我想生成文本如「有更新可用,請訪問http://example.com下載它!」,是否可以使鏈接可點擊而不必在文本中間放置鏈接標籤?

+1

Web應用程序? Windows應用程序? – 2012-01-01 04:05:00

回答

4

您可以使用一個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),然後使用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); 
} 
+0

謝謝,當我點擊它時鏈接不工作。另外,你可以更新答案,包括我可以,正如kishorejangid所說,將autoresize屬性設置爲false以使其多行。 – mowwwalker 2012-01-01 04:41:13

+0

更新了答案。 – keyboardP 2012-01-01 04:47:23

0

我假設你正在使用做一個Windows應用程序,而不是一個Web應用程序。

在C#中,您可以通過將它拖放到窗體上來創建一個常規文本框,將其屬性更改爲多行,並將其設置爲只讀。多數民衆贊成我總是這樣做。

至於沒有linklabel添加鏈接到文本。有一種方法可以添加鏈接到文本框。您可以在http://www.codeproject.com/KB/miscctrl/LinkTextBox.aspx/

1

查看一個相當不錯的教程您可以使用正常標籤並將AutoSize屬性設置爲false。 然後調整你的寬度和高度它會自動包裹它

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); 
}; 
+0

謝謝,但我不希望richtextbox具有白色背景,我不能將其更改爲透明。 – mowwwalker 2012-01-01 04:42:14

+1

@Walkerneo - 是不能更改透明。設置richTextBox1.BackColor = this.BackColor; (家長控制背景) – adatapost 2012-01-01 04:50:54