تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
سؤال عن المقارنة في ListBox
#1
السلام عليكم ورحمة الله وبركاته

وكل عام وانتم بخير

هذا مثال للماقرنة في listBox1 عن الاسطر المكرر
وهو يقوم بارسال المكرر الى ListBox2
اريد تحديد السطر المكرر المكرر في ListBox1
وذلك بتلوينه أو تحديده بأي طريقة


الملفات المرفقة
.rar   COMPARENEW.rar (الحجم : 281.81 ك ب / التحميلات : 88)
الرد }}}
تم الشكر بواسطة:
#2
وهناك ملاحظة اخرى

في المثال وبالتحديد في كود المقارنة في السطر

كود :
ListBox1.Items.Remove(DuplicateItem)

لحذف المكرر من ListBox1 لا يعمل
مع أنه في حالة الوصول لحل تلوينه يكفي وسيستغنى عن حذفة
الرد }}}
تم الشكر بواسطة:
#3
وعليكم السلام ورحمة الله Smile

وأنت بخير أخي Wink

تفضل أخي .. إن شاء الله هذا يكون طلبك

كود :
Private Sub Deleted()
    Dim ItemsToDelete As New List(Of Integer)

    For I As Integer = 0 To ListBox1.Items.Count - 1
        For J As Integer = I + 1 To ListBox1.Items.Count - 1
            If Not ItemsToDelete.Contains(J) Then
                If LCase(ListBox1.Items(I)) = LCase(ListBox1.Items(J)) Then
                    ItemsToDelete.Add(J)
                End If
            End If
        Next
    Next

    Dim Count As Integer = 0

    For Each I As Integer In ItemsToDelete
        ListBox2.Items.Add(ListBox1.Items(I - Count))
        ListBox1.Items.RemoveAt(I - Count)

        Count += 1
        lblFileName2.Text = "Deleted: " & Count
    Next
End Sub

مرفق تصحيح الكود


الملفات المرفقة
.rar   COMPARENEW_Fix.rar (الحجم : 79.73 ك ب / التحميلات : 58)
الرد }}}
تم الشكر بواسطة:
#4
اشكرك اخي العزيز

لكن لم يحدث اي تغيير عند الاستخدام

المطلوب هو تلوين السطر المكرر في listbox1

بعد ارساله الى ListBox2
الرد }}}
تم الشكر بواسطة:
#5
لم اجد لسؤالي جواب
الرد }}}
تم الشكر بواسطة:
#6
وعليكم السلام
يمكنك عمل هذا في الدات ListView اما ListBox لا اعرف
الرد }}}
تم الشكر بواسطة:
#7
تفضل أخي Smile

كود :
Dim ItemsToDelete As New List(Of Integer)

Private Sub Deleted()
    ItemsToDelete.Clear()

    For I As Integer = 0 To ListBox1.Items.Count - 1
        For J As Integer = I + 1 To ListBox1.Items.Count - 1
            If Not ItemsToDelete.Contains(J) Then
                If LCase(ListBox1.Items(I)) = LCase(ListBox1.Items(J)) Then
                    ItemsToDelete.Add(J)
                End If
            End If
        Next
    Next

    Dim Count As Integer = 0

    For Each I As Integer In ItemsToDelete
        ListBox2.Items.Add(ListBox1.Items(I - Count))
        'ListBox1.Items.RemoveAt(I - Count)

        Count += 1
        lblFileName2.Text = "Deleted: " & Count
    Next

    ListBox1.Invalidate()
End Sub

Private Sub ListBox1_DrawItem(sender As System.Object, e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
    Dim MyBrush As SolidBrush = SystemBrushes.WindowText

    If ItemsToDelete.Contains(e.Index) Then
        MyBrush = New SolidBrush(Color.Red)
    End If

    Dim MyListBox As ListBox = CType(sender, ListBox)

    If MyListBox.Items.Count > 0 Then
        e.DrawBackground()
        e.Graphics.DrawString(MyListBox.Items(e.Index), e.Font, MyBrush, e.Bounds)
        e.DrawFocusRectangle()
    End If
End Sub


الملفات المرفقة
.rar   COMPARENEW_Fix_1.rar (الحجم : 145.09 ك ب / التحميلات : 63)
الرد }}}
تم الشكر بواسطة:
#8
الف شكر اخي العزيز Motaz Alnuweiri

Shy

لكن لم يعمل معي الكود هل جربته اقصد
هل قمت بقراءة الملف المرفق في سؤالي وبعد استرخاج المكرر نفذت الكود الذ قمت بوضع لي
إقتباس :Dim ItemsToDelete As New List(Of Integer)

Private Sub Deleted()
ItemsToDelete.Clear()

For I As Integer = 0 To ListBox1.Items.Count - 1
For J As Integer = I + 1 To ListBox1.Items.Count - 1
If Not ItemsToDelete.Contains(J) Then
If LCase(ListBox1.Items(I)) = LCase(ListBox1.Items(J)) Then
ItemsToDelete.Add(J)
End If
End If
Next
Next

Dim Count As Integer = 0

For Each I As Integer In ItemsToDelete
ListBox2.Items.Add(ListBox1.Items(I - Count))
'ListBox1.Items.RemoveAt(I - Count)

Count += 1
lblFileName2.Text = "Deleted: " & Count
Next

ListBox1.Invalidate()
End Sub

Private Sub ListBox1_DrawItem(sender As System.Object, e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
Dim MyBrush As SolidBrush = SystemBrushes.WindowText

If ItemsToDelete.Contains(e.Index) Then
MyBrush = New SolidBrush(Color.Red)
End If

Dim MyListBox As ListBox = CType(sender, ListBox)

If MyListBox.Items.Count > 0 Then
e.DrawBackground()
e.Graphics.DrawString(MyListBox.Items(e.Index), e.Font, MyBrush, e.Bounds)
e.DrawFocusRectangle()
End If
End Sub

المعذرة ارجوا تحميل مثالي السابق وفيه مجلد باسم File فيه ملف نصي اقراءة بالبرنامج ونفذ المقارنه يعمد بشكل جيد
المطلوب بعد التنفيذ تحديد السطر الذي تكرر
او تلوينه
الرد }}}
تم الشكر بواسطة:
#9
الملف الذي ذكرته لايوجد فيه أي سطر متكرر أخي !!
الرد }}}
تم الشكر بواسطة:
#10
جرب المثال مع الملف

التكرار يكون من بعد الاحرف
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] سؤال بخصوص الترقيم التلقائي اليدوي yosif 5 336 16-04-26, 01:05 AM
آخر رد: أبو خالد الشكري
  سؤال عن الاسمبلي و النيم سبيس justforit 0 243 07-12-25, 12:28 AM
آخر رد: justforit
  فائدة بخصوص التعامل مع علامات التنصيص مع {سؤال} justforit 4 520 02-11-25, 11:19 PM
آخر رد: justforit
  كيف يتم عرض جدول من قائمة listbox في داتاقريدفيو ahmedfa71 5 1,082 04-09-25, 02:59 PM
آخر رد: ahmedfa71
  [نقاش] سؤال MetoDas 2 1,644 20-04-25, 10:21 PM
آخر رد: Kamil
  [سؤال] سؤال ترددت قبل نشرة:طابعة الباركود لماذا تطبع أكثر من ليبل فارغ قبل السليم dr.programming 1 835 20-04-25, 09:26 PM
آخر رد: Kamil
  سؤال لو سمحتم احبتى فى الله خالد كامل1 4 993 09-02-25, 12:02 AM
آخر رد: princelovelorn
  سؤال واستفسار خالد كامل1 1 523 04-02-25, 09:31 PM
آخر رد: aliday03
  سؤال فى تقرير كريستال خالد كامل1 0 501 04-02-25, 05:50 AM
آخر رد: خالد كامل1
Question [VB.NET] هناك سؤال يهم كل مبرمج الماذا برنامجك يظهر على بعض الشاشات اكثر دقه بشكل مصغر ومشوه Microformt 0 537 01-02-25, 03:48 PM
آخر رد: Microformt

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


يقوم بقرائة الموضوع: