none
Como grabar un richtextbox con formato... RRS feed

  • Pregunta

  • saludos amigos del foro, les traigo una inquietud, tengo un richtextbox que ha sido formateado con negrita italica underline con tabulaciones sangria y etc, ahora al momento de guardarlo en la la tabla pierde los valores, el richtextbox se llama rtbNotas y se graba en la tabla como texto, que tendria que cambiar para que se grabe bien con todos los formatos previos, de antemano gracias.

    rudolf heiner.

    lunes, 23 de noviembre de 2015 18:18

Respuestas

  • Hola Rudolf, para no perder los valores de tipos de letra debes trabajar con la propiedad Rtf del RichTextBox. La propiedad Text solo te informa del texto pero no de los tipos de letra.

    Saludos, Javier J

    • Marcado como respuesta Rudolf Heiner lunes, 23 de noviembre de 2015 19:45
    lunes, 23 de noviembre de 2015 18:28
  • Saludos Javier, gracias por responder, mira voy a poner codigo de como interactua mi rtbNotas Ok y me avisas donde tengo que cambiar el text por rtf ok:

        Sub llenar()
            Try
                If Not dgv_notas.CurrentRow Is Nothing Then
                    txtId.Text = dgv_notas.CurrentRow.Cells(0).Value.ToString
                    rtbNotas.Text = dgv_notas.CurrentRow.Cells(1).Value.ToString
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

        Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click
            If (txtNombre.Text <> "") Then
                txtId.Text = If(sw = 0, nue_var.Siguiente_Id("NOTAS"), txtId.Text)
                Dim nota = rtbNotas.Text
      
                If sw = 0 Then
                    nue_not.insertar(CInt(id), nota)
                    actualizar_dgv()
                Else
                    nue_not.modificar(CInt(id), nota)
                    actualizar_dgv()
                End If

                dgv_notas.Enabled = True
                actualiza_mserror()
                sw = 0
                limpiar()
                llenar()
                bloquear()
            Else
                MsgBox("Faltan Campos por Llenar", MsgBoxStyle.Critical, "Notas")
            End If
        End Sub

      Public Sub insertar(ByVal id As Integer, ByVal nota As String)

            nue_var.consulta = "INSERT INTO notas VALUES(?id, ?nota)"

            Try
                nue_conexion.conectar()
                nue_var.cmd = New MySqlCommand(nue_var.consulta, nue_conexion.conex())
                nue_var.cmd.Parameters.Add("?id", MySql.Data.MySqlClient.MySqlDbType.Int64).Value = id
                nue_var.cmd.Parameters.Add("?nota", MySql.Data.MySqlClient.MySqlDbType.Text).Value = nota
                nue_var.cmd.ExecuteNonQuery()
                nue_conexion.desconectar()
            Catch mierror As MySqlException
                MsgBox("Error de Conexión a la Base de Datos: " & mierror.Message)
            End Try

        End Sub

    • Marcado como respuesta Rudolf Heiner lunes, 23 de noviembre de 2015 23:32
    lunes, 23 de noviembre de 2015 18:48
  • Simplemente tienes que cambiar rtbNotas.Text  por rtbNotas.Rtf :

        Sub llenar()
            Try
                If Not dgv_notas.CurrentRow Is Nothing Then
                    txtId.Text = dgv_notas.CurrentRow.Cells(0).Value.ToString
                    rtbNotas.Rtf = dgv_notas.CurrentRow.Cells(1).Value.ToString
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
        Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click
            If (txtNombre.Text <> "") Then
                txtId.Text = If(sw = 0, nue_var.Siguiente_Id("NOTAS"), txtId.Text)
                Dim nota = rtbNotas.Rtf
      
                If sw = 0 Then
                    nue_not.insertar(CInt(id), nota)
                    actualizar_dgv()
                Else
                    nue_not.modificar(CInt(id), nota)
                    actualizar_dgv()
                End If
    
                dgv_notas.Enabled = True
                actualiza_mserror()
                sw = 0
                limpiar()
                llenar()
                bloquear()
            Else
                MsgBox("Faltan Campos por Llenar", MsgBoxStyle.Critical, "Notas")
            End If
        End Sub
      Public Sub insertar(ByVal id As Integer, ByVal nota As String)
    
            nue_var.consulta = "INSERT INTO notas VALUES(?id, ?nota)"
    
            Try
                nue_conexion.conectar()
                nue_var.cmd = New MySqlCommand(nue_var.consulta, nue_conexion.conex())
                nue_var.cmd.Parameters.Add("?id", MySql.Data.MySqlClient.MySqlDbType.Int64).Value = id
                nue_var.cmd.Parameters.Add("?nota", MySql.Data.MySqlClient.MySqlDbType.Text).Value = nota
                nue_var.cmd.ExecuteNonQuery()
                nue_conexion.desconectar()
            Catch mierror As MySqlException
                MsgBox("Error de Conexión a la Base de Datos: " & mierror.Message)
            End Try
    
        End Sub


    Saludos, Javier J

    • Marcado como respuesta Rudolf Heiner martes, 24 de noviembre de 2015 7:56
    martes, 24 de noviembre de 2015 7:43

Todas las respuestas

  • Hola Rudolf, para no perder los valores de tipos de letra debes trabajar con la propiedad Rtf del RichTextBox. La propiedad Text solo te informa del texto pero no de los tipos de letra.

    Saludos, Javier J

    • Marcado como respuesta Rudolf Heiner lunes, 23 de noviembre de 2015 19:45
    lunes, 23 de noviembre de 2015 18:28
  • Saludos Javier, gracias por responder, mira voy a poner codigo de como interactua mi rtbNotas Ok y me avisas donde tengo que cambiar el text por rtf ok:

        Sub llenar()
            Try
                If Not dgv_notas.CurrentRow Is Nothing Then
                    txtId.Text = dgv_notas.CurrentRow.Cells(0).Value.ToString
                    rtbNotas.Text = dgv_notas.CurrentRow.Cells(1).Value.ToString
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

        Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click
            If (txtNombre.Text <> "") Then
                txtId.Text = If(sw = 0, nue_var.Siguiente_Id("NOTAS"), txtId.Text)
                Dim nota = rtbNotas.Text
      
                If sw = 0 Then
                    nue_not.insertar(CInt(id), nota)
                    actualizar_dgv()
                Else
                    nue_not.modificar(CInt(id), nota)
                    actualizar_dgv()
                End If

                dgv_notas.Enabled = True
                actualiza_mserror()
                sw = 0
                limpiar()
                llenar()
                bloquear()
            Else
                MsgBox("Faltan Campos por Llenar", MsgBoxStyle.Critical, "Notas")
            End If
        End Sub

      Public Sub insertar(ByVal id As Integer, ByVal nota As String)

            nue_var.consulta = "INSERT INTO notas VALUES(?id, ?nota)"

            Try
                nue_conexion.conectar()
                nue_var.cmd = New MySqlCommand(nue_var.consulta, nue_conexion.conex())
                nue_var.cmd.Parameters.Add("?id", MySql.Data.MySqlClient.MySqlDbType.Int64).Value = id
                nue_var.cmd.Parameters.Add("?nota", MySql.Data.MySqlClient.MySqlDbType.Text).Value = nota
                nue_var.cmd.ExecuteNonQuery()
                nue_conexion.desconectar()
            Catch mierror As MySqlException
                MsgBox("Error de Conexión a la Base de Datos: " & mierror.Message)
            End Try

        End Sub

    • Marcado como respuesta Rudolf Heiner lunes, 23 de noviembre de 2015 23:32
    lunes, 23 de noviembre de 2015 18:48
  • Simplemente tienes que cambiar rtbNotas.Text  por rtbNotas.Rtf :

        Sub llenar()
            Try
                If Not dgv_notas.CurrentRow Is Nothing Then
                    txtId.Text = dgv_notas.CurrentRow.Cells(0).Value.ToString
                    rtbNotas.Rtf = dgv_notas.CurrentRow.Cells(1).Value.ToString
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
        Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click
            If (txtNombre.Text <> "") Then
                txtId.Text = If(sw = 0, nue_var.Siguiente_Id("NOTAS"), txtId.Text)
                Dim nota = rtbNotas.Rtf
      
                If sw = 0 Then
                    nue_not.insertar(CInt(id), nota)
                    actualizar_dgv()
                Else
                    nue_not.modificar(CInt(id), nota)
                    actualizar_dgv()
                End If
    
                dgv_notas.Enabled = True
                actualiza_mserror()
                sw = 0
                limpiar()
                llenar()
                bloquear()
            Else
                MsgBox("Faltan Campos por Llenar", MsgBoxStyle.Critical, "Notas")
            End If
        End Sub
      Public Sub insertar(ByVal id As Integer, ByVal nota As String)
    
            nue_var.consulta = "INSERT INTO notas VALUES(?id, ?nota)"
    
            Try
                nue_conexion.conectar()
                nue_var.cmd = New MySqlCommand(nue_var.consulta, nue_conexion.conex())
                nue_var.cmd.Parameters.Add("?id", MySql.Data.MySqlClient.MySqlDbType.Int64).Value = id
                nue_var.cmd.Parameters.Add("?nota", MySql.Data.MySqlClient.MySqlDbType.Text).Value = nota
                nue_var.cmd.ExecuteNonQuery()
                nue_conexion.desconectar()
            Catch mierror As MySqlException
                MsgBox("Error de Conexión a la Base de Datos: " & mierror.Message)
            End Try
    
        End Sub


    Saludos, Javier J

    • Marcado como respuesta Rudolf Heiner martes, 24 de noviembre de 2015 7:56
    martes, 24 de noviembre de 2015 7:43
  • Gracias Javier ya esta,

    saludos,

    rudolf heiner.

    martes, 24 de noviembre de 2015 7:58