Foro de elhacker.net

Programación => 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
  1.   1.    Public Sub negrita()
  2.   2.         If rtb_hoja.SelectionFont.Bold = False Then
  3.   3.             rtb_hoja.SelectionFont = New Font(rtb_hoja.SelectionFont, FontStyle.Bold)
  4.   4.         Else
  5.   5.             rtb_hoja.SelectionFont = New Font(rtb_hoja.SelectionFont, FontStyle.Bold = False)
  6.   6.         End If
  7.   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
  1.  
  2. rtb_hoja.SelectionFont.FontStyle.Bold=true
  3. rtb_hoja.SelectionFont.FontStyle.italyc=true
  4.  
  5.  

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
  1.    Public Sub negrita()
  2.        If rtb_hoja.SelectionFont.Bold = False Then
  3.            rtb_hoja.SelectionFont = New Font(rtb_hoja.SelectionFont, rtb_hoja.SelectionFont.Style Or FontStyle.Bold)
  4.        Else
  5.            rtb_hoja.SelectionFont = New Font(rtb_hoja.SelectionFont, rtb_hoja.SelectionFont.Style - 1)
  6.        End If
  7.    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.