تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيفية حفظ إعدادات البرنامج بحيث لا تتغير
#1
ما الطريقة الصحيحة لحفظ إعدادات البرنامج بحيث لا تتغير عند نقل مجلد (Debuge) من جهاز إلى آخر

عند إنشاء متغير في settings ثم إسناد قيمة له من قبل المستخدم ثم مجلد البرنامج إلى جهاز آخر فإن قيمة المتغير تعود للقيمة الإفتراضية والمطلوب أن تظل القيمة التي أسندها المستخدم للمتغير قبل ذلك



أرجو أن يكون الحل بعيدًا عن استخدام قواعد البيانات وملفات XML
الرد }}}
تم الشكر بواسطة:
#2
مسار ملف أعدادات المستخدم تختلف عن إعدادات البرنامج


هناك نوعين من الإعدادات :
التطبيق -(Application) للقراءة فقط في وقت التشغيل. يمكنك تحرير قيمة واستخدام التطبيق دون إعادة البناء.
تحفظ في : yourappname.exe.config


المستخدم -(User) قراءة و كتابة في وقت التشغيل. يتم حفظ القيم على مستوى حساب مستخدم ويندوز.

تحفظ في : C:\Documents and Settings\[username]\Local Settings\Application Data\[AssemblyCompanyName]\[NameOfProject].[SomeLongUniqueString]\[AssemblyVersion]\user.config.
مثال :

C:\Users\abdulla\AppData\Local\EmailSender\EmailSenderNet.vshost.exe_Url_layp1zjs3efmh3nnxgs3wj0if0kd3vz0\1.0.0.0\user.config




أو قم بتغيير الــ Scope إلى Application
   
ولكن لن يستطيع المستخدم حفظ القيمة أو تغييرها



وبذلك أنت مجبر على عمل طريقة لحفظ الإعدادات الخاصة بك 
الــ XML جداً بسيط 

ومناسب جداً في حالت إذا كان البرنامج Portable يعني متنقل مثلاً بالفلاش من جهاز إلى آخر
الرد }}}
#3
المشكلة دى جننتنى ، فبعد أن إنتهيت من عمل البرنامج و قمت بعمل الإعدادت للنصوص و الصور و حفظ هذه الإعدادات و لكن عند إنتقال الملف الذى تم صنعة بالبرنامج من جهاز لآخر لم أجد ما تم كتابته

أى عندما يقوم المستخدم بكتابة شىء فى البرنامج أو وضع صورة فإن البرنامج يحفظها عنده فقط و لا يفتح البيانات أو الصور فى أى جهاز أخر

أرجو تفسير ما حدث معى و كيفية معالجته
إذا فقدت مالك ... فقليل ما فقدت 

و إذا فقدت صحتك ... فكثير ما فقدت 

و إذا فقدت أخلاقك ... فكل شىء قد فقدت
الرد }}}
تم الشكر بواسطة: أبو خالد الشكري
#4
لا أنصحك بحفظ الإعدادات في My.Settings
لأنه سيحفظ الإعدادات في المسار التالي :
...... C:\Users\User_name\AppData

وضعت لك مثالا لحفظ الإعدادات النموذجية لـ Form1

والكود التالي سيقوم بحفظ الإعدادات التالية :
    

* لون الفورم
* حجم الفورم

* إلغاء تكبير الفورم
* إلغاء تصغير الفورم
* وضع الفورم في منتصف الشاشة

وهذه الإعدادات يمكنك تعديها في ملف Settings.txt

بداية يجب أن تقوم بإضافة ملف نصي جديد اسمه Settings وضعه في مجلد المشروع Debug

ضع في الملف النصي السطور الخمسة التالية ، ثم قم بحفظ الملف :
BackColor=Silver

Size=937x654
MaximizeBox=False
MinimizeBox=False
StartPosition=CenterScreen


بعد ذلك ضع  الأكواد التالية في Form1

كود :
Imports System.ComponentModel
Imports System.IO

Public Class Form1
   Dim SettingsPath As String = Path.Combine(Application.StartupPath, "Settings.txt")

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       ApplySettings()
   End Sub

   Sub ApplySettings()
       ' القيم الافتراضية
       Dim backColor As Color = Color.Silver
       Dim formSize As Size = New Size(937, 654)
       Dim maximizeBox As Boolean = False
       Dim minimizeBox As Boolean = False
       Dim startPos As FormStartPosition = FormStartPosition.CenterScreen

       If File.Exists(settingsPath) Then
           Dim lines() As String = File.ReadAllLines(settingsPath)
           For Each line In lines
               Dim parts() As String = line.Split("="c)
               If parts.Length = 2 Then
                   Dim key As String = parts(0).Trim()
                   Dim value As String = parts(1).Trim()

                   Select Case key
                       Case "BackColor"
                           Try
                               backColor = Color.FromName(value)
                           Catch
                           End Try
                       Case "Size"
                           Dim sizeParts() As String = value.Split("x"c)
                           If sizeParts.Length = 2 Then
                               Dim width As Integer = Val(sizeParts(0))
                               Dim height As Integer = Val(sizeParts(1))
                               formSize = New Size(width, height)
                           End If
                       Case "MaximizeBox"
                           maximizeBox = (value.ToLower = "true")
                       Case "MinimizeBox"
                           minimizeBox = (value.ToLower = "true")
                       Case "StartPosition"
                           Select Case value
                               Case "CenterScreen"
                                   startPos = FormStartPosition.CenterScreen
                               Case "Manual"
                                   startPos = FormStartPosition.Manual
                               Case "WindowsDefaultLocation"
                                   startPos = FormStartPosition.WindowsDefaultLocation
                               Case "WindowsDefaultBounds"
                                   startPos = FormStartPosition.WindowsDefaultBounds
                           End Select
                   End Select
               End If
           Next
       End If

       Me.BackColor = backColor
       Me.Size = formSize
       Me.MaximizeBox = maximizeBox
       Me.MinimizeBox = minimizeBox
       Me.StartPosition = startPos

   End Sub

   Private Sub Form1_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
       Dim lines As New List(Of String)
       lines.Add("BackColor=" & Me.BackColor.Name)
       lines.Add("Size=" & Me.Width & "x" & Me.Height)
       lines.Add("MaximizeBox=" & Me.MaximizeBox.ToString())
       lines.Add("MinimizeBox=" & Me.MinimizeBox.ToString())
       lines.Add("StartPosition=" & Me.StartPosition.ToString())

       File.WriteAllLines(settingsPath, lines)
   End Sub
End Class
الرد }}}
تم الشكر بواسطة: asmarsou , Amir_Alzubidy
#5
(05-08-25, 11:38 AM)أبو جودة كتب : المشكلة دى جننتنى ، فبعد أن إنتهيت من عمل البرنامج و قمت بعمل الإعدادت للنصوص و الصور و حفظ هذه الإعدادات و لكن عند إنتقال الملف الذى تم صنعة بالبرنامج من جهاز لآخر لم أجد ما تم كتابته

أى عندما يقوم المستخدم بكتابة شىء فى البرنامج أو وضع صورة فإن البرنامج يحفظها عنده فقط و لا يفتح البيانات أو الصور فى أى جهاز أخر

أرجو تفسير ما حدث معى و كيفية معالجته

هذه ميزة وليست سلبية، لو عندك برنامج يعمل على عدة أجهزة في شركة واحدة، فلكل شخص سيكون إعدادت يفضلها، بالتالي الاعدادات التي تختارهات على هذا الجهاز ستختلف عن الإعدادت التي تشغلها على جهاز آخر..
فشخص بصره ضعيف فعنده قصر نظر أو طول نظر أو عنده عمى ألوان فإن إختياراته تختلف عن شخص آخر لا يعاني من هذه المشاكل ..
فكل شخص يختار ما يناسبه .. والكل في نفس الشركة يشغلون نفس البرنامج وكل شخص يرى برنامجه بمشاهد مختلفة مناسبة له..

إما إن كنت تريد حفظ بيانات، فهذه يتعلق بنوعين من قواعد البيانات ،ن إما قواعد حقيقة ومحركات بحث مثل آكسس، سيو إل سيرفر
أو نصية بسيطة مثل إكس إم إل ..
وهذه تحتاج أن تتعلمها جيدا لتحسن إستخدامها .
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  لماذا البرنامج يتوقف بدل عرض رسالة الخطأ justforit 0 96 07-12-25, 10:22 AM
آخر رد: justforit
  كيفية منع ظهور الأخطاء من إعدادات البيسيك mmaalmesry 2 842 29-08-25, 10:30 AM
آخر رد: mmaalmesry
  كيفية جلب أسماء الأعمدة بجدول من جداول sql heem1986 2 738 17-08-25, 09:15 PM
آخر رد: heem1986
  مساعدة في كيفية ترحيل البيانات من داتا قريدفيو إلى داتا قريدفيو في فيجوال بيسك ahmedfa71 13 2,179 09-07-25, 11:24 PM
آخر رد: أبو خالد الشكري
  [سؤال] تغيير الفورم الرئيسي عند تشغيل البرنامج في Visual Studio مع .NET 8؟ silverlord 2 639 09-03-25, 03:52 AM
آخر رد: silverlord
Rainbow [VB.NET] عدد من هم فاتحي البرنامج محمد مسافر 1 408 25-02-25, 07:58 PM
آخر رد: princelovelorn
  كيفية احتساب الفرق بين تاريخين بناء على عدد معين مصمم هاوي 2 537 15-01-25, 02:02 PM
آخر رد: مصمم هاوي
  كيفية التعامل مع inputbox في فيجوال ستوديو أسامة حسين 4 3,486 14-01-25, 02:04 AM
آخر رد: أبو خالد الشكري
  استفسار عن حمايه البرنامج ahmedramy 1 540 25-12-24, 11:07 PM
آخر رد: aljzazy
  مساعدة في عمل جملة الاتصال في ملف خارج البرنامج Emam emam 2 373 25-11-24, 09:24 PM
آخر رد: Emam emam

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


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