وعليكم السلام ورحمة الله وبركاته
تفضل هالطريقة بدون عملية نسخ :
كود :
Public Function MargeRTF(str1 As String, str2 As String)
Dim FontTable1 = (From Txt In Strings.Split(JustAfter(str1, "{\fonttbl", "}}") & "}", "}{") Select Txt.TrimStart("{").TrimEnd("}"))
Dim FontTable2 = (From Txt In Strings.Split(JustAfter(str2, "{\fonttbl", "}}") & "}", "}{") Select Txt.TrimStart("{").TrimEnd("}"))
Dim ColorTable1 = (From Txt In Strings.Split(JustAfter(str1, "{\colortbl ;", "}"), ";") Select Txt Where Txt.Trim.Length > 0)
Dim ColorTable2 = (From Txt In Strings.Split(JustAfter(str2, "{\colortbl ;", "}"), ";") Select Txt Where Txt.Trim.Length > 0)
Dim Text1 As String = JustAfter(str1, ";}" & Chr(13), "}")
Dim Text2 As String = JustAfter(str2, ";}" & Chr(13), "}")
Dim HeaderText As String = JustAfter(str1, "{", "{")
Dim MargedText As String = ""
Dim FontTable As New List(Of String)
Dim ColorTable As New List(Of String)
If Text1 Is Nothing Then Text1 = JustAfter(str1, "}}" & Chr(13), "}")
If Text2 Is Nothing Then Text2 = JustAfter(str2, "}}" & Chr(13), "}")
FontTable.AddRange(FontTable1)
ColorTable.AddRange(ColorTable1)
ColorTable.AddRange(ColorTable2)
For I = 0 To FontTable2.Count - 1
FontTable.Add(FontTable1(I).Replace("\f" & I, "\f" & FontTable1.Count + I))
Next
Dim Font As String = "{" & Strings.Join(FontTable.ToArray, "}{").Replace("}}{{", "}{") & "}"
Dim Color As String = Strings.Join(ColorTable.ToArray, ";") & ";"
For I = 0 To FontTable2.Count - 1
Text2 = Text2.Replace("\f" & I, "\f" & FontTable1.Count + I)
Next
For I = 1 To ColorTable2.Count
Text2 = Text2.Replace("\cf" & I, "\cf" & ColorTable1.Count + I)
Next
MargedText += "{" & HeaderText & "{\fonttbl" & Font & "}" & vbNewLine
MargedText += "{\colortbl ;" & Color & "}" & vbNewLine
MargedText += Text1 & vbNewLine
MargedText += Text2 & vbNewLine & "}"
Return MargedText
End Function
Public Function JustAfter(ByVal Str As String, ByVal Seq As String, ByVal SeqEnd As String) As String
Dim Orgi As String = Str
Try
Str = Str.ToLower()
Seq = Seq.ToLower()
SeqEnd = SeqEnd.ToLower()
Dim i As Integer = Str.IndexOf(Seq)
If i < 0 Then Return Nothing
i = i + Seq.Length
Dim j As Integer = Str.IndexOf(SeqEnd, i)
Dim [end] As Integer
If j > 0 Then [end] = j - i Else [end] = Str.Length - i
Return Orgi.Substring(i, [end])
Catch generatedExceptionName As Exception
Return ""
End Try
End Function
كود :
RichTextBox3.Rtf = MargeRTF(RichTextBox1.Rtf, RichTextBox2.Rtf)
وفقك الله