Einstellungen für Programm

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Einstellungen für Programm

    Hallo,

    ich steh Grad vor einem kleinem Problem.
    Und zwar möchte ich Einstellungen die von Benutzer gemacht werden speichern.
    Momentan arbeite ich mit "My.Settings." jedoch habe ich da das Problem dass die Einstelligen nur für einen Benutzer gespeichert werden. Sprich wenn ich jetzt zum Beispiel den Name des Seriellen Ports unter Benutzer 1 speichere/ändere, so werden diese Einstellungen nicht für Benutzer 2 geändert wenn dieser sich dann am PC anmeldet.

    Wie kann man das elegant lösen?

    Hoffe ihr könnt mir weiterhelfen

    Gruß

    Flexy
    @flexy1994 Sortiere zunächst, was für jeden Benutzer einzeln gelten soll, z.B. Hintergrundbild, Font, ...
    und
    was für alle Benutzer identisch ist, Hardwareparameter und solch, z.B. ComPort.Name.
    Diese musst Du getrennt verwalten. Die Einzelbenutzerdaten pack in die Settings, die AlleBenutzerDaten pack in eine XML-Datei <=> DataTable neben die Exe.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Dieses hier wäre auch möglich.
    Kurz.. universell. für jeden Benutzer gleich.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim Var1 As Integer = 88
    2. Dim Var2 As String = "Superwichtig"
    3. Private Sub SaveMeineWichtigenDaten()
    4. Dim Lines As New List(Of String)
    5. Dim ss As String
    6. ss = "Name:" & Chr(9) & Var2
    7. Lines.Add(ss)
    8. ' ...
    9. ss = "Wert:" & Chr(9) & Var1.ToString
    10. Lines.Add(ss)
    11. System.IO.File.WriteAllLines(Application.StartupPath & "\storedata.txt", Lines.ToArray)
    12. End Sub
    13. Private Sub LoadMeineWichtigenDaten()
    14. Dim Dateiname As String = Application.StartupPath & "\storedata.txt"
    15. Dim Lines As New List(Of String)
    16. Dim feld() As String
    17. If IO.File.Exists(Dateiname) Then
    18. Lines.AddRange(System.IO.File.ReadAllLines(Dateiname))
    19. For i = 0 To Lines.Count - 1
    20. feld = Lines(i).Split(Chr(9))
    21. Select Case feld(0)
    22. Case "Name:"
    23. Var2 = feld(1)
    24. Case "Wert:"
    25. Var1 = CType(feld(1), Integer)
    26. ' ....
    27. End Select
    28. Next
    29. End If
    30. End Sub


    Edit:
    Nanu? Hintergrundbild?.. Fonts?
    soweit wie ich gelesen habe, geht's nur im einfache dachen wie neun Namen eines Ports.

    Die getrennte Vorgehensweise müsste man mit einem benutzerdefinierten SettingsProvider genauso machen können.
    Da ist es eigentlich nur notwendig, wenn man die Provider-Eigenschaft eines anwendungsspezifischen Settings-Eintrages festlegt.
    Damit wird diese Eigenschaft für jeden Nutzer am selben Speicherort persistiert, so ferne er so programmiert ist.
    Die anderen Eigenschaften werden hingegen, wie gewohnt, benutzerspezifisch abgelegt...
    Jou.
    Sozusagen PrivateSettings und PublicSettings.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!