2008-11-26 14 views
5

Tengo un cliente de Jabber IM personalizado y tengo un problema con los enlaces. Cuando se ingresa algo como http://something.com, quiero que aparezca como un enlace en la ventana del mensaje. La ventana de mensaje es un cuadro de texto estándar de C#. ¿Hay alguna manera de marcarlo como un enlace para que se pueda hacer clic y abrir la página web?Enlaces en el cuadro de texto de C#

Gracias

+0

Esto le permitirá comenzar ... [http://www.codeproject.com/KB/edit/RichTextBoxLinks.aspx](http://www.codeproject.com/KB/edit/RichTextBoxLinks.aspx "Texto enriquecido Box Links ") ¡Buena suerte! –

Respuesta

9

Un RichTextBox pueden detectar URL de, yo no creo que un cuadro de texto regular puede detectarlas. Sin embargo, siempre puede usar una línea de RichTextBox para su entrada.

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

+4

¡Más de 4 años después, y tu respuesta sigue siendo ayudar a las personas! Gracias. –

+1

Me alegro de que pueda ser de alguna ayuda :) –

3

La solución proporcionada por el Sr. Jamie García es un gran uno, al que hace referencia el artículo de MSDN enlace suministrado. Sin embargo, dado que esta solución se propuso hace mucho tiempo, me gustaría proponer una actualizada.

El MSDN solution inicia Internet Explorer y pasa la URL al programa directamente. Creo que un enfoque mejor (y más centrado en el usuario) sería lanzar el enlace dentro del navegador web predeterminado del usuario.

Aún configuramos un controlador de eventos para el evento LinkClicked de nuestro control RichTextBox, pero con algunos cambios. Aquí está el código completo:

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

Como los estados MSDN article, la propiedad DetectUrls del control RichTextBox está activado por defecto, por lo que cualquier válida HTTP/HTTPS URLs aparecerá automáticamente como hipervínculos subrayados.

+1

_ "La propiedad DetectUrls del control RichTextBox está habilitada de manera predeterminada, por lo que cualquier URL http/https válida aparecerá automáticamente como hipervínculos subrayados." _ Los eventos LinkClicked solo ocurrirán en hipervínculos subrayados (validados por el Control), entonces ¿por qué tenemos que validar? – miguelmpn

Cuestiones relacionadas