Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: ltbl en 26 Octubre 2010, 13:49 PM

Título: Editor de texto / negrita / cursiva / ...
Publicado por: ltbl en 26 Octubre 2010, 13:49 PM
Hola.
Estoy haciendo un editor de texto con Visual Basic.

Tengo un problema con la negrita, cursiva y subrayado.

Las 3 funciones son iguales por ejemplo la que pasa el texto a negrita es:
Código (vbnet) [Seleccionar]
   1.    Public Sub negrita()
   2.         If rtb_hoja.SelectionFont.Bold = False Then
   3.             rtb_hoja.SelectionFont = New Font(rtb_hoja.SelectionFont, FontStyle.Bold)
   4.         Else
   5.             rtb_hoja.SelectionFont = New Font(rtb_hoja.SelectionFont, FontStyle.Bold = False)
   6.         End If
   7.     End Sub


Cuando le doy al botón de negrita funciona bien, tanto para poner negrita como para quitarla.
El problema viene cuando tengo una palabra en negrita, y ademas la quiero en cursiva, que no me guarda el primer estado.
Aún no tengo mucha practica con VB y no se me ocurre cómo hacerlo, ¿alguien me echa una mano?

Título: Re: Editor de texto / negrita / cursiva / ...
Publicado por: BlackZeroX en 27 Octubre 2010, 06:24 AM
claro lo que pasa es que le estas endicando que en cualquier caso se cree otra estructura de y tipo Font y que deseche la anterior..., lo que puedes hacer ( No tengo instalado el VB .NET ahorita ) pero supongo que seria asi:

Código (Vb) [Seleccionar]


rtb_hoja.SelectionFont.FontStyle.Bold=true
rtb_hoja.SelectionFont.FontStyle.italyc=true



OJO que no traigo el VB.NEt y esto lo supuse unicamente.

P.D.: Hay que leerse un poco mas sobre VB.NET... en la MSDN.

Dulce Infierno Lunar!¡.
Título: Re: Editor de texto / negrita / cursiva / ...
Publicado por: ltbl en 30 Octubre 2010, 11:44 AM
Hola, ya encontré como hacer lo que quería. Lo dejo aquí por si a alguien le sirve.
Código (vbnet) [Seleccionar]

   Public Sub negrita()
       If rtb_hoja.SelectionFont.Bold = False Then
           rtb_hoja.SelectionFont = New Font(rtb_hoja.SelectionFont, rtb_hoja.SelectionFont.Style Or FontStyle.Bold)
       Else
           rtb_hoja.SelectionFont = New Font(rtb_hoja.SelectionFont, rtb_hoja.SelectionFont.Style - 1)
       End If
   End Sub


Cada estilo de fuente (negrita, cursiva, etc) tiene asociado un numero, por ejemplo negrita es 1, cursiva es 2, subrayado es 4. La propiedad "SelectionFont.Style" del RichTextBox devuelve la suma de los estilos que hay en ese momento. Restando el numero del estilo que estoy quitando a los que ya hay consigo mantener los otros, que es lo que queria.