| |
VB.NET - FortgeschritteneVariablen als Objekte behandeln? | | | Autor: Peter S. | Datum: 06.04.23 18:33 |
| Hallo zusammen,
ich schreibe eine Klasse "Sett", die sehr einfach Settings speichern und wieder herstellen soll. Alle Objekte mit zu speichernden Eigenschaften werden einfach in eine Liste aufgenommen.
Class A
Dim i as Integer = 123
Dim S as New Sett
S.List.Add(Me) 'Übergabe Form "Me"
S.List.Add(Button1) 'Übergabe Button "Button1"
S.List.Add(i) 'nur Übergabe Wert, nicht Übergabe Variable "i"
'Einstellungen laden
S.Load()
...
'Einstellungen speichern
S.Save()
End Class
Class Sett
Dim List as New List(of Object)
Sub Load()
For Each o In List
Load2(o)
Next
End Sub
Sub Load2(F as Form)
F.Text=...
F.Location = ...
F. Height ...
End Sub
Sub Load2(B as Button)
B.Text=...
B.Color = ...
End Sub
Sub Load2(i as Integer)
i=...
End Sub
End Class Das funktioniert für echte Objekte, aber nicht für Variablen. Der Wert von i wird (logischerweise) nicht verändert. Hat jemand eine Idee, wie man das realisieren kann? Kann man Variablen als Objekt übergeben?
Beitrag wurde zuletzt am 06.04.23 um 18:50:29 editiert. | |
Re: Variablen als Objekte behandeln? | | | Autor: Peter S. | Datum: 06.04.23 19:30 |
| Der Vollständigkeit halber ist noch zu erwähnen, dass die Settings der einzelnen Objekte serialisiert werden und in ein Dictionary(of String) geschrieben werden. Der Key ist dabei jeweils der Name des Objektes.
Class Sett
Dim List as New List(of Object)
Dim Dict as new Dictionary(of String,String)
Sub Load()
For Each o In List
Load2(o)
Next
End Sub
Sub Load2(F as Form)
Dim Settings as string = Dict(F.Name)
F.Text=...
F.Location = ...
F. Height ...
End Sub
Sub Load2(B as Button)
Dim Settings as string = Dict(B.Name)
B.Text=...
B.Color = ...
End Sub
Sub Load2(i as Integer)
Dim Settings as string = Dict(i.Name) 'Geht nicht
i=...
End Sub
End Class Beim Deserialisieren, also beim Laden der Settings wird die entsprechende Einstellung anhand des Objektnamens ausgewählt. Bei Variablen aber so nicht möglich. Oder doch? | |
Re: Variablen als Objekte behandeln? | | | Autor: Peter S. | Datum: 18.04.23 17:42 |
| Die Idee ist, mit einer eigenen Class die Settings von vielen unterschiedlichen Objekten und Variablen sehr einfach zu speichern.
Alle Daten werden serialisiert und in einer einzigen Setting My.Settings.Alles gespeichert.
Es müssen nicht etliche Settings angelegt werden und das Interface ist schön übersichtlich. Leider muss man für Variablen etwas mehr tippen, dafür kann man jetzt auch Default-Werte angeben, falls noch keine Settings gespeichert waren.
Dim S as New Sett
Dim i as Integer
Dim a as String
'Einstellungen Objekte definieren
S.Add(Me)
S.Add(Button1)
S.Add(RichTextBox1)
'Einstellungen Objekte laden
S.Load() 'lädt Me, Button1, RichTextBox1
'Einstellungen Variablen laden
S.Load("i",i) 'lädt i
S.Load("a",a,"default") 'lädt a,
'falls keine Setting gespeichert, dann a="default"
...
'Einstellungen Objekte speichern
S.Save() 'speichert Me, Button1, RichTextBox1
'Einstellungen Variablen speichern
S.Save("i",i) 'speichert i
S.Save("a",a) 'speichert a Vielleicht hat ja jemand eine Idee, wie man das Interface noch weiter vereinfachen kann. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|