الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال عن حفظ عدة فيم Array في Setting للبرنامج

بدأه Dream_Works في 9 يناير 2012 · 3 رد · 494 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي سؤال حول كيفية حفظ صف من عدة متغيرات Array نوعها Color و النوع Integer في إعدادات البرنامج My.Settings

لأنني كلما أحفظها في الإعدادات يتم مسحها ...

و أعتقد إنه بهذي معاه حق ... كيف يمكن نسخ أوبجكت كبيره في الريجستري !!!!

في هذه الاعدادات لا يمكن إلا حفظ البيانات الأساسية Integer , Boolean و غيره و تكون Scalar مفردة و ليست صف Array

فهل توجد طريقة لحفظ الأري

سؤال آخر :

هل يمكن حفظ نموذج كامل أو مربعات نصوص و غيرها في ال Setting

و شكراً

200px-Dreamworks.jpg
#2

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

أخوي عملت لك كلاس لـ حفظ الآراي بالريجستري

تفضل الاكواد

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim o = New MySetting("MyVbKey")

o.SetValue("ok", New String() {"1", "2", "3"}) ' add array!

o.Append("ok", "4") ' add value to that array

For Each x As String In o.GetArray("ok") ' get array

MsgBox(x)

Next

o.SetValue("name", "test!") ' add string

o.Append("name", "test2") ' string name += test2

MsgBox(o.GetValue("name"))

o.DeleteMySetting() ' delete my key!!

End Sub

End Class

Class MySetting ' by njq8 2012/01/09

Public ReadOnly Key As String

Private RG As Microsoft.Win32.RegistryKey

Private reg As Microsoft.Win32.Registry

Sub New(ByVal Key As String)

RG = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("software", True).CreateSubKey(Key)

Me.Key = Key

End Sub

Sub DeleteMySetting()

reg.CurrentUser.DeleteSubKey("software\" & Key, False)

End Sub

Sub SetValue(ByVal Name As String, ByVal Value As String)

RG.SetValue(Name, Value)

End Sub

Sub SetValue(ByVal Name As String, ByVal Value As Array)

RG.SetValue(Name, Value)

End Sub

Sub DelteValue(ByVal Name As String)

RG.DeleteValue(Name, False)

End Sub

Sub Append(ByVal Name As String, ByVal value As String)

Dim v As Object = RG.GetValue(Name, "")

Dim L As New List(Of String)

If v.GetType.ToString.Contains("String[]") Then

L.AddRange(v)

L.Add(value)

RG.SetValue(Name, L.ToArray)

Else

v += value

RG.SetValue(Name, v)

End If

End Sub

Function GetValue(ByVal Name As String) As String

Return RG.GetValue(Name, Nothing)

End Function

Function GetArray(ByVal Name As String) As String()

Return RG.GetValue(Name, Nothing)

End Function

End Class

إن شاء الله كل شيء واضح بالاكواد والافضل عند حفظ الألوان color

تحفظه على انه integer

بهذي الطريقه

Color.Red.ToArgb

واذا حبيت تسترجع اللون عن طريق الرقم

بهذي الطريقه

Color.FromArgb(FromInteger)

طبعا FromInteger

راح تكون Color.Red.ToArgb

بالتوفيق ,,..

#3

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

اخي يمكنك حفظ البيانات في ملف XML او CSV

.:: Wish to become better and better ::.

#4

أشكركم على ردكم و مجهودكم أخي الكريم

سؤال : هل يمكن تخزين أوبجكت كامل بالريجستري ... مثلاً فورم كامل بالريجستري أو مربع نص أو ComboBox أو غيره ؟... أنا شخصياً لا أعتقد ذلك

للإضافة لقراء الموضوع ... توجد طريقة جيدة أيضاً بالإضافة إلى طريقة زميلنا الأخ نجد

و هي حفظ القيم في Array Of Strings في أوبجكت نوعه System.Collections.Specialized.StringCollection أو شيء من هذا القبيل ...

عند التخزين ... يتم التخزين على شكل Integer و لكن على String

و عند الاستعادة تتم الاستعاده من السترنج

مح تحياتي للجميع

200px-Dreamworks.jpg

مواضيع مشابهة