Avatar billede joemoz Nybegynder
29. december 2009 - 17:34 Der er 11 kommentarer og
1 løsning

Lagring af variabel-værdier

Jeg har et program i VB.NET hvor brugeren skal vælge en lang række værdier på en form.

Jeg kunne godt tænke mig på en nem måde at programmet ved tryk på en knap gemte alle disse værdier, sådan at de let kunne hentes ind når programmet køres igen.

Er der en smart måde at gøre det på?
Avatar billede joemoz Nybegynder
29. december 2009 - 18:27 #1
Jeg skulle måske lige tilføje at det er Visual Studio 2008 Express, og at de værdier jeg gerne vil gemme er i kasser på en form - altså f.eks. en talværdi fra en NumericUpDown eller en checkbox.
Avatar billede arne_v Ekspert
29. december 2009 - 18:42 #2
Du kunne gemme dem i app.config.
Avatar billede joemoz Nybegynder
29. december 2009 - 18:50 #3
"Du kunne gemme dem i app.config. "
Tak, men kan du uddybe lidt hvordan det gøres?

Jeg vil helst have at de først bliver gemt når jeg trykker på en knap, og da jeg har ca. 100 controls på min form kunne det være rart at slippe for at kode hver enkelt i forhold til gem og hent. Endelig vil jeg gerne gemme værdierne på en central server så programmet kan hente og gemme dem uanset hvilken lokal PC det køres fra.
Avatar billede arne_v Ekspert
29. december 2009 - 19:21 #4
Hent alle config variable fra app.config til et centralt objekt, lad koden opdatere dette, lav en save knap som skriver objektet tilbage til app.config.
Avatar billede arne_v Ekspert
29. december 2009 - 19:21 #5
Den relevante klasse er System.Cnfiguration.ConfigurationManager.
Avatar billede joemoz Nybegynder
29. december 2009 - 19:31 #6
Tak, men er jeg stadig nødt til manuelt at lave en liste over alle objekter, og så skrive en gem- og en hentfunktion for hver enkelt i forhold til det centrale objekt (og kan du uddybe hvordan jeg laver et sådant objekt?)

Jeg kan i øvrigt ikke finde den klasse du nævner - er du sikker på den ikke hedder system.configuration.configurationsettings?
Avatar billede arne_v Ekspert
29. december 2009 - 19:31 #7
Ja.

Prøv og lav en ref til System.Configuration.dll og se om ikke den dukker op.
Avatar billede arne_v Ekspert
29. december 2009 - 19:33 #8
Lav et objekt med alle de properties du skal bruge.

Læs det ved program opstart.

Diverse GUI kode henter fra det objekt og ændrer i det objekt som de har brug for.

Et centralt sted har du en save knap som skriver tilbage til fil.

(du kunne også gemme automatisk ved nedlukning af program)
Avatar billede joemoz Nybegynder
29. december 2009 - 20:10 #9
OK, tak, men det undrer mig stadig at der ikke er indbygget en funktion i VS 2008 man kan kalde, der tager værdien af alle controls og gemmer dem i en fil/et objekt, frem for at man selv skal ind og oprette hver enkelt variabel. Det er vel ret almindeligt at man har behov for at kunne gemme et snapshot af værdierne fra gang til gang man kører en applikation.
Avatar billede arne_v Ekspert
30. december 2009 - 01:16 #10
Hvis du virkeligt vil have alt, så kunne du jo prøve om du kunne serialisere top objektet. Evt. XML serialisere det.

Du kunne også lave en rekursiv metode som løb igennem alle kontroller.

Der er muligheder. Men jeg synes ikke at mulighederne lyder specielt attraktive.
Avatar billede joemoz Nybegynder
03. januar 2010 - 23:09 #11
OK men tak for hjælpen - smid et svar.
Avatar billede arne_v Ekspert
03. januar 2010 - 23:20 #12
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester