عندي 2 listview اريد نقل بيانات من الاولي الي الثانية
1 listview الاولي بالفورم الاول
2 listview الثانية بالفورم الثاني
اريد النقل بدون تكرار لان كل عملية add يتبعها تكرار للقيمة يعني لو عندي محمد في الاولي وتم نقلة الي الثانية لايتم تكرارة بعد كل عملية add وانما يضاف العنصر الجديد ولايتم اضافة عنصر تم اضافة مسبقا واريد الحفظ بعد الاضافة داخل الاداة بدون ملفات خارج البرنامج
اريد حفظ القيمة بعد الاضافة في اليست فيو الفورم 2
مشكور جدا اخي بس المشكلة في عدم الحفظ اريد طريقة للحفظ بدون ملف نصي خارجي
المشكلة انقل 2 عمود وليس واحد فقط واريد الحفظ في ماي سيتنج my setting
اكوادك رائعة وهي تنقل بدون تكرار وهذا جزء من سؤالي
ولكن مشكلة الحفظ my setting
للنقل بدون تكرار
كود الاستاذ just.coder صحيح 100%
واذا كنت تريد نقل اكثر من عامود
نفس الكود مع ذياده بسيطه
PHP كود :
Try
For i As Integer = 0 To ListView1.Items.Count - 1
Dim bol As Boolean = True
For t As Integer = 0 To Form2.ListView1.Items.Count - 1
If Form2.ListView1.Items(t).SubItems(1).Text = ListView1.Items(i).SubItems(1).Text Then
bol = False
End If
Next
If bol = True Then
Dim itm As New ListViewItem
itm.Text = Form2.ListView1.Items.Count + 1
itm.SubItems.Add(ListView1.Items(i).SubItems(1))
itm.SubItems.Add(ListView1.Items(i).SubItems(2))
itm.SubItems.Add(ListView1.Items(i).SubItems(3))
Form2.ListView1.Items.Add(itm)
End If
Next
MsgBox("تم النقل", MsgBoxStyle.Information)
Catch ex As Exception
End Try
للحفظ فى ال setting
اولا اذهب الى My Project > Settings
فى خانة ال Name اكتب Itemss
وفى خانة ال Type اختار system.collections.specialized.stringcollection
ثم اذهب الى صفحة تحرير الكود تبع الفورم وفى اعلى الصفحه اكتب هذا الكود
PHP كود :
Imports System.Collections.Specialized
دلوقتى اختار اى حدث تريده و اكتب هذا الكود للحفظ فى ال Settings
للحفظ
PHP كود :
My.Settings.Itemss = New StringCollection()
Dim items = New List(Of String)()
For Each item As ListViewItem In Me.ListView1.Items
Dim subitems = New List(Of String)()
For Each subitem As ListViewItem.ListViewSubItem In item.SubItems
subitems.Add(subitem.Text)
Next
items.Add(String.Join("|", subitems))
Next
My.Settings.Itemss.AddRange(items.ToArray())
My.Settings.Save()
ثم اختار اى حدث تريده لتعبئة الليست فيو بالبيانات المحفوظه فى ال Settings
PHP كود :
Dim items = New ListViewItem(My.Settings.Itemss.Count - 1) {}
Dim i As Integer = 0
While i < items.Length
items(i) = New ListViewItem(My.Settings.Itemss(i).Split("|"c))
i += 1
End While
Me.ListView1.Items.AddRange(items)
وهذا لمسح البيانات المحفوظه فى ال Settings
PHP كود :
My.Settings.Itemss.Clear()
وهذا الكود يمكن ان تحتاجه
لمسح البيانات المتشابهه Remove Duplicates فى اى ليست فيو
PHP كود :
Public Sub RemoveDuplicates()
Dim item1 As ListViewItem
Dim item2 As ListViewItem
For i As Integer = ListView1.Items.Count - 1 To 0 Step -1
item1 = ListView1.Items(i)
For s As Integer = i + 1 To ListView1.Items.Count - 1 Step 1
item2 = ListView1.Items(s)
If item1.SubItems(1).Text = item2.SubItems(1).Text Then
ListView1.Items.Remove(item2)
Exit For
End If
Next s
Next (i)
End Sub
قمة في الروعة الاكواد اخي وفعلا نقلت بيانات محددة والكواد duplicat شغال
بس المشكلة في الحفظ الاكواد دية بتظهر خط متعرج subitems
items.Add(String.Join("|", subitems))
error message
value of type system .collection gneric.list of(string)cannot conferted to 1-dimenosial array of string
وانا عايز الاكواد كاملة في حدث زر للحفظ لو اضفت صورة الي العناصر من الجهاز هتتحفظ بنفس الاكواد
طيب كدة المشكلة لني كود الحفظ ايضا لوتم الاضافة اكثر من مرة يضيف يعني يكرر ارجو تعديلة لكل لايكرر عملية الحفظ
يعني لو انا عندي 3 عناصر واتحفظو لو ضغط علي الزر كل مرة ينزل بيانات جديدة
Dim items = New ListViewItem(My.Settings.Itemss.Count - 1) {}
Dim i As Integer = 0
While i < items.Length
items(i) = New ListViewItem(My.Settings.Itemss(i).Split("|"c))
i += 1
End While
Me.ListView1.Items.AddRange(items)
ثانيا هل يمكن دمج هذا الكو والكود السابق لة في نفس الاداة الزر بحيث بدلمن الضغظ علي زر للحفظ وزر للاسترجاع يبقي زر واحد فقط