تقييم الموضوع :
  • 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
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Thumbs Up كيفية تشغيل وإغلاق الادوات الذكية لويندوز 7 عن طريق الكود رمضان محمد 6 906 11-10-17, 08:48 PM
آخر رد: رمضان محمد
  طباعة كل محتويات الصورة بالاضافات الجديدة محمد اسماعيل 7 168 09-10-17, 12:27 AM
آخر رد: محمد اسماعيل
  عند فتح فورم يتم غلق كافة الفورمات وصلت لنص الحل وارجو من الخبراء المساعده نبيل فتحى 3 93 06-10-17, 01:54 AM
آخر رد: نبيل فتحى
  تسجيل دخول موقع عن طريق Httprequest pos . للخبراء فقط kingofring 5 154 05-10-17, 01:39 AM
آخر رد: kingofring
  [VB.NET] اخذ نسخة احتياطية عن طريق المشروع محمد بوقزاحة 4 111 27-09-17, 10:48 AM
آخر رد: محمد بوقزاحة
  [VB.NET] لكل خبير ارجو الحل Engmtamous 8 185 21-09-17, 07:52 PM
آخر رد: alsouf
  ممكن طريقه طباعه محتويات داتاجريد فيو من خلال الكريستال ريبورت hashish2003 7 276 11-09-17, 10:05 PM
آخر رد: hashish2003
  المساعدة في عمل برنامج حساب مجموع عدد حدود من السلسلة بإدخالها عن طريق لوحة المفاتيح Amjad 0 55 08-09-17, 04:02 PM
آخر رد: Amjad
  [سؤال] كيفية معرف اسماء كل Button الموجودة فى الفروم عن طريق كلاس alims 8 171 04-09-17, 11:27 PM
آخر رد: alims
  الغاء تنفيذ الادخال عن طريق inputbox mo93 5 191 03-09-17, 01:38 AM
آخر رد: سعود

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


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