Array aus eigenem Datentyp in den MySettings speichern

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Ferb300.

    Array aus eigenem Datentyp in den MySettings speichern

    Hi community
    Ich hab mir einen eigenen, sagen wir mal, "Datentyp", mit einer enumration erstellt:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Enum AllItems
    2. Metallrohr = 0
    3. Lämpchen = 1
    4. Gehäuse = 2
    5. Spiegel = 3
    6. Textilien = 4
    7. Metall = 5
    8. Holz = 6
    9. Linsen = 7
    10. Platinen = 8
    11. ElektronischeBauteile = 9
    12. Kabel = 10
    13. Papier = 11
    14. Farbe = 12
    15. Motor = 13
    16. Batterie = 14
    17. End Enum



    jetzt hab ich mir daraus ein Array gemacht

    VB.NET-Quellcode

    1. Public MyItems(200) As AllItems


    habe dieses mit einträgen versehen

    VB.NET-Quellcode

    1. MyItems(0) = Items.Holz


    bis hierhin kein fehler
    aber wenn ich jetzt versuche, dieses "bestückte" Array in den my Settings zu speichern, haut das nicht hin. mir ist auch klar, wieso, nämlich weil die my Setting einem anderen Datentyp entspricht. Mein Problem ist, dass ich nicht weiß, wie ich dieses Array in den my Settings speichern kann.

    Vielen dank im voraus, Ferb300
    umfassender HTML-Editor mit allem drum und dran: 40%

    Ferb300 schrieb:

    sagen wir mal
    Du machst Dir eine Klasse, in der alle Deine Daten als Properties implementiert sind.
    Eine Instanz dieser Klasse kannst Du serialisieren, z.B. als Binär- oder XML-Datei, BinaryFormatter bzw. XmlSerializer.
    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!

    Ferb300 schrieb:

    Mein Problem ist, dass ich nicht weiß, wie ich dieses Array in den my Settings speichern kann.

    Man kann auch ein Array mit den Settings behandeln...

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
    3. Dim test As New KleineTestklasse
    4. Stop
    5. My.Settings.DeineItems = test.MyItems
    6. Stop
    7. Dim x = My.Settings.DeineItems
    8. Stop
    9. End Sub
    10. End Class

    KleineTestklasse

    VB.NET-Quellcode

    1. Public Class KleineTestklasse
    2. Public Enum AllItems
    3. Metallrohr = 0
    4. Lämpchen = 1
    5. Gehäuse = 2
    6. Spiegel = 3
    7. Textilien = 4
    8. Metall = 5
    9. Holz = 6
    10. Linsen = 7
    11. Platinen = 8
    12. ElektronischeBauteile = 9
    13. Kabel = 10
    14. Papier = 11
    15. Farbe = 12
    16. Motor = 13
    17. Batterie = 14
    18. End Enum
    19. Public ReadOnly MyItems() As AllItems
    20. Sub New()
    21. MyItems = {AllItems.ElektronischeBauteile, AllItems.Farbe, AllItems.Kabel, AllItems.Metall, AllItems.Platinen, AllItems.Lämpchen, AllItems.Gehäuse, AllItems.Batterie}
    22. End Sub
    23. End Class
    benutzerdefiniertes Settings

    VB.NET-Quellcode

    1. Imports KleineTestklasse
    2. Namespace My
    3. Partial Friend NotInheritable Class MySettings
    4. ''' <summary>
    5. ''' benutzerdefinierte Settingseigenschaft
    6. ''' </summary>
    7. <System.Configuration.UserScopedSettingAttribute(), _
    8. System.Diagnostics.DebuggerNonUserCodeAttribute(), _
    9. System.Configuration.SettingsSerializeAs(System.Configuration.SettingsSerializeAs.Xml)> _
    10. Public Property DeineItems As AllItems()
    11. Get
    12. Return CType(Me("DeineItems"), AllItems())
    13. End Get
    14. Set(ByVal value As AllItems())
    15. Me("DeineItems") = value
    16. End Set
    17. End Property
    18. End Class
    19. End Namespace

    Vielen Dank euch beiden, ich hab jetzt eine benutzerdefinierte Setting wie es @VB1963 gemacht hat. at funktioniert, aber wenn ich versuche daraus ein Array zu machen gibt es die Fehlermeldung "Bezeichner erwartet" beim Parameter 200.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Property MyItems(200) As Items.AllItems()
    2. Get
    3. Return CType(Me("MyItems"), Items.AllItems())
    4. End Get
    5. Set(ByVal value As Items.AllItems())
    6. Me("MyItems") = value
    7. End Set
    8. End Property



    MFG Ferb300
    umfassender HTML-Editor mit allem drum und dran: 40%

    Ferb300 schrieb:

    daraus ein Array zu machen
    Das wäre eine indizierte Property, das ist etwas blöd zu realisieren.
    Was ganz genau willst Du denn indizieren?
    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!

    RodFromGermany schrieb:

    eine indizierte Property


    was ist eine indizierte property?

    ErfinderDesRades schrieb:

    er hat da nämlich keine Zahl in der Klammer stehen


    schon, aber dann isses ja kein Array?
    umfassender HTML-Editor mit allem drum und dran: 40%

    Ferb300 schrieb:

    was ist eine indizierte property?
    Ein Property als Array, von dem Du mit nem Index das entsprechende Element ausliest.
    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!
    Habs jetzt rausgekriegt indem ich mir den thread nochmal durchgelesen hab.
    Vielen Dank euch allen.
    umfassender HTML-Editor mit allem drum und dran: 40%