Editor de texto / negrita / cursiva / ...

Iniciado por ltbl, 26 Octubre 2010, 13:49 PM

0 Miembros y 1 Visitante están viendo este tema.

ltbl

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?


BlackZeroX

#1
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!¡.
The Dark Shadow is my passion.

ltbl

#2
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.