تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
(تم الحل) كيف يتم جمع محتويات 2 Richtextbox أو أكثر عن طريق Rtf
#1
بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

كيف يتم جمع محتويات 2 Richtextbox أو أكثر عن طريق Rtf
إذا كان لدي مجموعة من Richtextbox وكانمت بداخلهم نصوص منسقة بألوان مختلفة وأردت جمعهم في Richtextbox أخير استخدمت Richtextbox1.Rtf= Richtextbox2.Rtf & Richtextbox3.Rtf
ولكن لم تنجح الطريقة مثل الخاصية Text
فكيف يتم جمعهم
شكرا
الرد }}}}
تم الشكر بواسطة:
#2
أفضل وأسهل طريقة هي أن تقوم بدمج النصين عن طريق النسخ واللصق مستفيدا بذلك من معالجة البيانات الموجود داخل أداة RichTextBox
مثال
إذا كان لديك أداتين من نوع RichTextBox
وتريد دمج نصيهما فاستعمل أداة ثالثة وقم بنسخ محتويات النص الأول والصقه في الأداة الثالثة ثم انسخ بيانات النص في الأداة الثانية والصقها في الأداة الثالثة مرة أخرى وبذلك دمجت النصين بكل يسر وسهولة
وهذا هو الكود
كود :
RichTextBox1.SelectAll()
        RichTextBox1.Copy()
        RichTextBox3.Paste()

        RichTextBox3.AppendText(vbNewLine)  ' ترك سطر جديد فاصل بين النصين

        RichTextBox2.SelectAll()
        RichTextBox2.Copy()
        RichTextBox3.Paste()

بالتوفيق
الرد }}}}
تم الشكر بواسطة:
#3
شكرا لك أخي sooriaty03 في الحقيقة جاءتني هذه الفكرة ولكني طبقتها بطريقة خاطئة وكنت أطتلع لوجود طريقة لا تعتمد علي الحافظة لكني سأطبقها إن شاء الله
الرد }}}}
تم الشكر بواسطة:
#4
وعليكم السلام ورحمة الله وبركاته

تفضل هالطريقة بدون عملية نسخ :
كود :
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)


وفقك الله
الرد }}}}
تم الشكر بواسطة:
#5
شكرا لك أخي Osama_Ghareeb ولكن إذا كان الكود بهذا الطول فالحافظة أفضل Smile
الرد }}}}
تم الشكر بواسطة:
#6
إقتباس :
jhhhhhhhhhhhhhhhhhhhhhhhhhh
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيفية تشغيل وإغلاق الادوات الذكية لويندوز 7 عن طريق الكود رمضان محمد 1 82 28-05-17, 06:53 PM
آخر رد: رمضان محمد
  طريق الكتابة على التكست بوكس aftfm 6 108 26-05-17, 09:01 PM
آخر رد: aftfm
  كيفيةاعادة المعلومات الي الجدول بعد مسح ما بداخل RichTextBox khaled12345 3 84 23-05-17, 12:37 AM
آخر رد: khaled12345
  ارسال بيانات عن طريق الإنترنت أسامة السالمي 7 141 22-05-17, 04:43 PM
آخر رد: Amir_alzubidy
  [سؤال] كود فتح الاوتوكاد عن طريق الفجوال 2008 gharib 3 78 21-05-17, 06:46 PM
آخر رد: gharib
  ممكن طريقة عمل راديو اذاعات القرآن الكريم عن طريق aassa 5 96 20-05-17, 12:49 AM
آخر رد: alma2
  ربط الاجهزة عن طريق ال Bluetooth mohamed haroon 0 36 16-05-17, 03:53 PM
آخر رد: mohamed haroon
  سؤال بخصوص التحكم بالمحرك عن طريق الحاسوب Basil Abdallah 2 67 16-05-17, 12:29 AM
آخر رد: alma2
  ما الحل ؟؟؟ alma_fandi 15 299 08-05-17, 05:21 AM
آخر رد: alma_fandi
  [VB.NET] طباعة محتويات الفورم على ريبورت فيوور tarek 1 110 17-04-17, 08:44 PM
آخر رد: Adrees

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم