2008-11-26 10 views
5

J'ai un client Jabber IM personnalisé et j'ai un problème avec les liens. Quand quelque chose comme http://something.com est entré, je veux qu'il apparaisse comme un lien dans la fenêtre du message. La fenêtre de message est une zone de texte C# standard. Y at-il un moyen de le marquer comme un lien afin qu'il puisse être cliqué et ouvrir la page Web?Liens dans la zone de texte C#

Merci

+0

Cela vous aidera à démarrer .. [http://www.codeproject.com/KB/edit/RichTextBoxLinks.aspx](http://www.codeproject.com/KB/edit/RichTextBoxLinks.aspx "Rich Text Box Links ") Bonne chance! –

Répondre

9

RichTextBox peut détecter les URL, je ne pense pas qu'un TextBox régulier peut les détecter. Cependant, vous pouvez toujours utiliser une ligne unique RichTextBox pour votre saisie.

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

+4

Plus de 4 ans plus tard, et votre réponse aide encore les gens! Je vous remercie. –

+1

Heureux que je puisse être utile :) –

3

La solution proposée par M. Jamie Garcia est un grand, référencé par le lien de l'article MSDN fourni. Cependant, étant donné que cette solution a été proposée il y a si longtemps, j'aimerais en proposer une mise à jour. Le MSDN solution lance Internet Explorer et transmet directement l'URL au programme. Je pense qu'une meilleure approche (et plus centrée sur l'utilisateur) serait de lancer le lien dans le navigateur Web par défaut de l'utilisateur.

Nous avons toujours configuré un gestionnaire d'événements pour l'événement LinkClicked de notre contrôle RichTextBox, mais avec quelques modifications. Voici le code complet:

// 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"))); 
} 

Comme les États MSDN article, la propriété DetectUrls du contrôle RichTextBox est activé par défaut, de sorte que toute valide http/https urls apparaîtront automatiquement sous forme d'hyperliens soulignés.

+1

_ "La propriété DetectUrls du contrôle RichTextBox est activée par défaut, ainsi toutes les URL http/https valides apparaîtront automatiquement comme liens hypertextes soulignés." _ Les événements LinkClicked ne se produiront que sur les liens hypertextes soulignés (validés par le contrôle), alors pourquoi avons-nous besoin de valider? – miguelmpn

Questions connexes