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

نسخة كاملة : حفظ التغيرات التي حدثت غي البرنامج بعد غلقه
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
اهلا اخواني
لدي قائمة list box
اريد ان يحفظ البرنامج التغيرات التي حدثت فيه حتى بعد غلق البنامج
بحيث انه عند فتحه ثانية اجد التعديلات التي قد قمت بها Smile
لا أن ابدأ من الأول Smile

هل من حل ؟
أما من رد ؟:eek:
السلام عليكم ورحمة الله وبركاته
الصراحه ماعرف الكود اللي تريده :confused:
جرب طريقه ثانيه احسن وهي ربطها بقاعدة بيانات.
وان شاء الله الاعضاء اللي بالمنتدى راح يساعدوك
Crazy"vb كتب :السلام عليكم ورحمة الله وبركاته
الصراحه ماعرف الكود اللي تريده :confused:
جرب طريقه ثانيه احسن وهي ربطها بقاعدة بيانات.
وان شاء الله الاعضاء اللي بالمنتدى راح يساعدوك
اشكرك اخي على مساعدتك لكن لا أستطيع ربطها بقاعدة بيانات
السلام عليكم ورحمة الله وبركاته

كود :
' استعراض العناصر المحفوظة
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim MyItems As String = Application.UserAppDataRegistry.GetValue("MyItems") ' استعادة العناصر المحفوظة في الريجستري
        If Not String.IsNullOrEmpty(MyItems) Then ' التأكد من وجود بيانات
            Dim Items() As String = MyItems.Split("|") ' تقسيم العناصر
            Me.ListBox1.Items.AddRange(Items.ToArray) ' إضافة العناصر لأداة الليست دفعة واحدة
        End If
    End Sub


    ' حفظ العناصر السابقة والجديدة
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Try
            Dim items As String = "" ' حاوية العناصر
            If Me.ListBox1.Items.Count > 0 Then ' التحقق من احتواء أداة الليست علي عناصر
                For Each s As String In Me.ListBox1.Items ' حلقة للدوران علي عناصر الأداة
                    If s <> "" Then ' التححق من عدم خلو المتغير من بيانات
                        items += s & "|" ' إضافة قيمة العنصر لحاوية العناصر
                    End If
                Next
                items = items.TrimEnd("|") ' حذف آخر علامة لأننا لا نحتاج إليها
                Application.UserAppDataRegistry.SetValue("MyItems", items) ' حفظ البيانات في الريجستري
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error")
        End Try
    End Sub

قد توجد طرق أخرى أسهل من هذا

****
***
**
*
طريقه اخرى

اذهب الى
Settings << My Prject
فى خانة ال name اكتب اى اسم .. وليكن itms

وخانة ال Type اختار System.Collections.Specialized.StringCollection

ثم فى حدث Form1_Load ضع هذا الكود

PHP كود :
If My.Settings.itms IsNot Nothing Then
            
For Each item In My.Settings.itms
                ListBox1
.Items.Add(item)
            
Next
        End 
If 

وفى حدث Form1_FormClosing ضع هذا الكود
PHP كود :
My.Settings.itms.Clear()
        For 
Each item In ListBox1.Items
            My
.Settings.itms.Add(item)
        
Next
        My
.Settings.Save() 
بالتوفيق ان شاء الله
kslawy كتب :السلام عليكم ورحمة الله وبركاته

كود :
' استعراض العناصر المحفوظة
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim MyItems As String = Application.UserAppDataRegistry.GetValue("MyItems") ' استعادة العناصر المحفوظة في الريجستري
        If Not String.IsNullOrEmpty(MyItems) Then ' التأكد من وجود بيانات
            Dim Items() As String = MyItems.Split("|") ' تقسيم العناصر
            Me.ListBox1.Items.AddRange(Items.ToArray) ' إضافة العناصر لأداة الليست دفعة واحدة
        End If
    End Sub


    ' حفظ العناصر السابقة والجديدة
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Try
            Dim items As String = "" ' حاوية العناصر
            If Me.ListBox1.Items.Count > 0 Then ' التحقق من احتواء أداة الليست علي عناصر
                For Each s As String In Me.ListBox1.Items ' حلقة للدوران علي عناصر الأداة
                    If s <> "" Then ' التححق من عدم خلو المتغير من بيانات
                        items += s & "|" ' إضافة قيمة العنصر لحاوية العناصر
                    End If
                Next
                items = items.TrimEnd("|") ' حذف آخر علامة لأننا لا نحتاج إليها
                Application.UserAppDataRegistry.SetValue("MyItems", items) ' حفظ البيانات في الريجستري
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error")
        End Try
    End Sub

قد توجد طرق أخرى أسهل من هذا

****
***
**
*
أسف للأنقطاع عنكم و عدم الرد بسرعة و أشكركم لأهتمامكم
شكرا اخي على هذا الكود لكنه صعب فعلا بعض الشئ Smile
learning.net كتب :طريقه اخرى

اذهب الى
Settings << My Prject
فى خانة ال name اكتب اى اسم .. وليكن itms

وخانة ال Type اختار System.Collections.Specialized.StringCollection

ثم فى حدث Form1_Load ضع هذا الكود

PHP كود :
If My.Settings.itms IsNot Nothing Then
            
For Each item In My.Settings.itms
                ListBox1
.Items.Add(item)
            
Next
        End 
If 

وفى حدث Form1_FormClosing ضع هذا الكود
PHP كود :
My.Settings.itms.Clear()
        For 
Each item In ListBox1.Items
            My
.Settings.itms.Add(item)
        
Next
        My
.Settings.Save() 
بالتوفيق ان شاء الله
أخي الكريم أشكرك على أهتمامك Smile
لكن عند غلق البرنامج تأتيني الرسالة التالية
Object reference not set to an instance of an object.
ما العمل ؟

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




نذهب الى خصائص المشروع عن طريق النقر مرتين على My Project في نافذة مستعرض المشروع في اليمين
أو من القائمة Project نختار Properties آخر خيار
ثم نحدد التبويب Settings في اليسار
نكتب في Name اسم المتغير وليكن itms
نحدد في Type الخيار System.Collections.ArrayList


فان لم نجدها نختار ...Browse في الأخير، ثم نوسع System.Collections ونختار منها ArrayList


ثم نضع هذا الكود لحفظ واسترجاع عناصر ListBox1
PHP كود :
Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
    
If My.Settings.itms IsNot Nothing Then
        Me
.ListBox1.Items.AddRange(My.Settings.itms.ToArray())
    
End If

End Sub

Private Sub Form1_FormClosing(ByVal sender As ObjectByVal e As System.Windows.Forms.FormClosingEventArgsHandles Me.FormClosing
    My
.Settings.itms = New ArrayList(ListBox1.Items)
    
My.Settings.Save()

End Sub 



[COLOR="#FF0000"]تم تصحيح إلى System.Collections



[/COLOR]
السلام عليكم ورحمة الله وبركاته
@@أبورائد@@ كتب :
السلام عليكم ورحمة الله وبركاته


ش

أولا: نذهب الى خصائص المشروع عن طريق النقر مرتين على My Project في نافذة مستعرض المشروع في اليمين
أو من القائمة Project نختار Properties اخر اختيار
ثم نختار التبويب Settings في اليسار
نكتب في Name اسم المتغير وليكن itms
نحدد في Type الاختيار System.Connections.ArrayList

فان لم تجدها اختر Browse ثم نفتح System.Connections ونختار منها ArrayList


ثم نضع هذا الكود لحفظ عناصر الـ ListBox1


PHP كود :
Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
    
If My.Settings.itms IsNot Nothing Then
        Me
.ListBox1.Items.AddRange(My.Settings.itms.ToArray())
    
End If

End Sub

Private Sub Form1_FormClosing(ByVal sender As ObjectByVal e As System.Windows.Forms.FormClosingEventArgsHandles Me.FormClosing
    My
.Settings.itms = New ArrayList(ListBox1.Items)
    
My.Settings.Save()

End Sub 





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

شكرا أخي على أهتمامك لكن System.Connections غير موجودة في القائمة أساسا ، وعندما كتبت في مربع selected typy جملة System.Connections.ArrayList قال انها غير موجودة ......
ما العمل الآن؟
الصفحات : 1 2