منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تلوين كلام محدد بلون معين
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
أخى الكريم
النص الموجود فى
RichTextBox
ناتج عملية بحث فى القرآن الكريم
كيفية تلوين كلمة البحث بلون مختلف الموجودو فى 
TextBox1 مربع البحث على حسب الصورة كلمة يمنون
اخي وصديقي اذا كنت تريد كود يقوم بتلوين كلمة او مجموعة كلمات انت تختارها
فانصحك باستخدام فضاء الاسماء System.Text.RegularExpressions
فهو مخصص لعمليات اتحقق من النصوص والمدخلات والتعامل معها بشكل افضل واسرع 
من طريقة استخدام الامر RichTextBox.Find بكثير

واليك هذا المشروع المثال والذي وضعت فيه اداة RichTextBox والتي استخدمها لعرض كلمات القران 
وايضا اداة TEXTBOX والتي تكتب فيها الكلمة التي تريد ايجادها وتلوينها داخل نص القران في RichTextBox 

يقوم الكود اولا بازالة التشكيل (الفتحة والكسرة و...) من النص الموجود في RichTextBox ان وجد 
ثم يقوم بالبحث ويضع النتائج في المصفوفة matchColl والتي استخدمها لحفظ نتائج البحث
 
اذا وجد البرنامج النص المطلوب يقوم باضافة Match متغير المطابقة الخاص بـRegex الى المصفوفة matchColl 
وبعد انتهاء البحث ووجود نتائج يمكن التنقل بينها باستخدام زرين هما التالي والسابق
حيث ان الضغط على زر التالي يقوم بايجاد النتيجة التالية لكلمة البحث في الاداة RichTextBox ويقوم بتحديدها ثم يقوم بتلوينها
وزر السابق يعيدك الى النتائج السابقة


هذا هو مجمل مايقوم الكود بعمله مع  ملاحظة اني لم اضع كل علامات التشكيل  

اخيرا اليك الكود

كود :
Imports System.Text.RegularExpressions

Public Class Form1

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        rtxt.LoadFile("D:\Downloads\q2.txt", RichTextBoxStreamType.PlainText)
    End Sub

    Dim matchColl As MatchCollection
    Private Sub btnFind_Click(sender As System.Object, e As System.EventArgs) Handles btnFind.Click
        'النص الذي نبحث عنه
        Dim pattern As String = txtFind.Text
        Dim rgx As New Regex(pattern)
        'النص الذي نبحث فيه
        Dim inputText As String = rtxt.Text
        ' ازالة التشكيل ان وجد
        rtxt.Text = removeTashkeel(rtxt.Text)
        '        ' اضافة النتائج الى مصمفوفة
        matchColl = Regex.Matches(rtxt.Text, pattern)
        'عرض النتائج
        lblResult.Text = "النتائج:" & matchColl.Count
          End Sub

    ' استبدال تشكيل الاحرف
    Function removeTashkeel(txt As String) As String
        Dim pattern As String = "[ًٌٍَُِّْۤۡ۠]"
        txt = Regex.Replace(txt, pattern, "")
        Return txt
    End Function

    'زر الانتقال للنتيجة التالية
    Dim i As Integer
    Private Sub btnNext_Click(sender As System.Object, e As System.EventArgs) Handles btnNext.Click
        rtxt.SelectionStart = matchColl(i).Index
        rtxt.SelectionLength = txtFind.Text.Length
        rtxt.SelectionColor = Color.Red
        i += 1
        lblResult.Text = "النتائج:" & i & "/" & matchColl.Count
    End Sub
    'زر الانتقال للنتيجة السابقة
    Private Sub btnPrev_Click(sender As System.Object, e As System.EventArgs) Handles btnPrev.Click
        rtxt.SelectionStart = matchColl(i).Index
        rtxt.SelectionLength = txtFind.Text.Length
        rtxt.SelectionColor = Color.Red
        i -= 1
        lblResult.Text = "النتائج:" & i & "/" & matchColl.Count
    End Sub
End Class
الصفحات : 1 2