2008-11-26 24 views
5

Özel bir Jabber IM istemcim var ve bağlantılarla ilgili bir sorun yaşıyorum. http://something.com gibi bir şey girildiğinde, ileti penceresinde bir bağlantı olarak görünmesini istiyorum. Mesaj penceresi standart bir C# metin kutusudur. Bir bağlantı olarak işaretlemenin bir yolu var, böylece tıklanabilir ve web sayfasını açabilir mi?Bağlantılar C# metin kutusunda

Teşekkür

+0

Bu başlangıç ​​olacaktır .. [http://www.codeproject.com/KB/edit/RichTextBoxLinks.aspx](http://www.codeproject.com/KB/edit/RichTextBoxLinks.aspx "Zengin Metin Kutu Linkler ") İyi şanslar! –

cevap

9

A RichTextBox, URL algılayabilir Ben normal TextBox onları tespit sanmıyorum. Bununla birlikte, her zaman girişiniz için bir Single line RichTextBox kullanabilirsiniz. Bay Jamie Garcia tarafından sağlanan

http://msdn.microsoft.com/en-us/library/f591a55w.aspx

+4

4 yıl sonra ve cevabınız hala insanlara yardım ediyor! Teşekkür ederim. –

+1

Sevindim Biraz yardımcı olabilir :) –

3

çözüm sağlanan MSDN makale bağlantısı tarafından başvurulan büyük biridir. Ancak, bu çözümün çok uzun zaman önce önerildiği göz önüne alındığında, güncellenmiş bir teklif vermek istiyorum.

MSDN solution Internet Explorer'ı başlatır ve URL'yi doğrudan programa geçirir. Daha iyi (ve daha kullanıcı merkezli) bir yaklaşımın, kullanıcının varsayılan web tarayıcısı içindeki bağlantıyı başlatmak olacağını hissediyorum.

RichTextBox denetimimizin LinkClicked olayına yönelik bir olay işleyicisi hazırlıyoruz, ancak birkaç değişiklik yapılıyor. İşte tam kodu: MSDN article devletler olarak

// Event raised from RichTextBox when user clicks on a link: 
private void richTextBox_LinkClicked(object sender, LinkClickedEventArgs e) 
{ 
    LaunchWeblink(e.LinkText); 
} 

// Performs the actual browser launch to follow link: 
private void LaunchWeblink(string url) 
{ 
    if (IsHttpURL(url)) Process.Start(url); 
} 

// Simple check to make sure link is valid, 
// can be modified to check for other protocols: 
private bool IsHttpURL(string url) 
{ 
    return 
     ((!string.IsNullOrWhiteSpace(url)) && 
     (url.ToLower().StartsWith("http"))); 
} 

, RichTextBox kontrolden DetectUrls özelliği varsayılan olarak etkindir, yani http/https URL'ler herhangi bir geçerli otomatik çizili köprü olarak görünecektir.

+1

_ "RichTextBox denetiminin DetectUrls özelliği varsayılan olarak etkindir, bu nedenle geçerli herhangi bir http/https URL'si otomatik olarak altı çizili köprüler olarak görünecektir." _ LinkClicked olayları yalnızca altı çizili köprülerde (onaylanmış) gerçekleşir Kontrol ile), neden doğrulamak gerekiyor? – miguelmpn

İlgili konular