StrataFrame Forum

SF RichTextbox - Remove RTF metadata when text value is blank or empty

http://forum.strataframe.net/Topic31973.aspx

By Edhy Rijo - 4/13/2013

Hi all,
When using the SF RichTextbox the control is binded to the Rtf property which is just fine, but if you empty the value in this control, the RTF metadata will be saved with no text and when you need to test if this value is empty, it will fail.

For now what I am doing is testing the RichTextbox1.Text value and saving an empty string if that is the case in the the bo.BeforeSave(), of course if would be nice to have this test be done in this SF RichTextbox  class instead.


    Private Sub BizCompany1_BeforeSave(ByVal e As MicroFour.StrataFrame.Data.BeforeSaveUndoEventArgs) Handles BizCompany1.BeforeSave
        '-- Check if the RTF value is empty, and remove any RTF meta code
        If String.IsNullOrWhiteSpace(Me.RichTextbox1.Text) Then
            Me.BizCompany1.QuickOrderFooter = String.Empty
        End If
    End Sub
By StrataFrame Team - 4/14/2013

Yes, Edhy, this is a limitation of basing our RTF on the WinForms RichTextBox.  The Rtf property is never empty, you always have to test on the Text.  Because of this, we have implemented some utility methods in our other applications like so:


    ''' <summary>
    ''' Converts an RTF formatted string into plain text
    ''' </summary>
    Public Shared Function RtfToText(ByVal rtf As String) As String
        '-- Establish Locals
        Using rtfCtrl As New System.Windows.Forms.RichTextBox()
            Dim r As String = ""

            '-- Set the text
            rtfCtrl.Rtf = rtf

            '-- Get the rtf code
            r = rtfCtrl.Text

            '-- Return the results
            Return r
        End Using
    End Function


This allows us to pass an RTF string and the RichTextBox will convert it to a regular string for us so we can we can view the raw text (and even test if it's empty).
By Edhy Rijo - 4/15/2013

Hey Ben,

Thanks, I will add this one to my utility program too. Smile