Avatar billede sholm Nybegynder
22. november 2006 - 08:54 Der er 7 kommentarer og
1 løsning

Application Settings i windows forms?

Jeg har et lille windows program, hvor jeg gerne vil gemme nogle globale settings som man kan ændre uden at skulle ændre i koden, noget ala. en .ini fil. Til dette har jeg forsøgt at bruge .settings i .NET 2.0. Jeg kan fint oprette en masse settings i filen, men hvordan dælen kan jeg bruge dem i mine forms/klasser? Jeg har forsøgt at lave en wrapper class til gets og sets til mine settings, men uden held med at få det til at virke.

I min Appsettings.settings har jeg en værdi med name=processPath og en value=c:/filer

Jeg har så lavet wrapper klassen:
sealed class TcpSettings : ApplicationSettingsBase
    {
        [ApplicationScopedSetting()]
        public String ProcessPath
        {
            get { return (String)this["processPath"]; }
            set { this["processPath"] = value; }
        }
    }

Jeg laver så en: TcpSettings AppSettings = new TcpSettings(); og forsøger at hente mine settings med AppSettings.ProcessPath - det fungerer også, men jeg får bare en tom streng tilbage. Så den får ikke fat på det der ligger i min Appsettings.settings.

Jeg tror selv at problemet ligger i mine gets og sets, men jeg kan ikke lige gennemskue hvor det går galt.
Avatar billede bulgroz Nybegynder
22. november 2006 - 10:22 #1
Der er også en mindre fejl i dine gettere og settere.
De bør være:

[ApplicationScopedSetting()]
public String ProcessPath
{
  get { return (String)this["ProcessPath"]; }
  set { this["ProcessPath"] = value; }
}
Avatar billede bulgroz Nybegynder
22. november 2006 - 10:45 #2
Husk at hvis du anvender VisualStudio, så kan koden autogenereres.
http://msdn2.microsoft.com/en-us/library/c9db58th(VS.80).aspx
Avatar billede sholm Nybegynder
22. november 2006 - 10:58 #3
Så vidt jeg lige kan se så har du ændret mine p'er i this["ProcessPath"] til store P'er istedet for små. Dette ændre ikke noget, desværre.

Jeg benytter VS 2005 og det meste af koden er autogenereret. Jeg har selv lavet min wrapper-klasse så det er derfor jeg tror fejlen ligger der :) Men dit forslag gjorde desværre ingen forskel.
Avatar billede bulgroz Nybegynder
22. november 2006 - 13:11 #4
Der tager du fejl. Problemet er blot at der ikke kun er ét problem.

Prøv følgende eksempel som svarer til dit, men som dog kun har User Scope:

    sealed class FormSettings : ApplicationSettingsBase
    {
        [UserScopedSetting]
        public string MyText
        {
            get
            {
                return (String)this["MyText"];
            }

            set
            {
                this["MyText"] = value;
            }
        }
    }

du kan se dokumentationen for eksemplet på :
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref4/html/T_System_Configuration_DefaultSettingValueAttribute.htm

dette virker med "User Scope". Men hvorfor det samme imidlertid ikke virker med Application scope er jeg ikke helt sikker på.
Avatar billede bulgroz Nybegynder
22. november 2006 - 13:17 #5
Følgende link er også interresant:
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_mancli/html/53b3af80-1c02-4e35-99c6-787663148945.htm

Der står bl.a.

"If you set the scope as Application, the property will be global to all users of the application, but will likely not be alterable at run time. "
Avatar billede bulgroz Nybegynder
22. november 2006 - 14:13 #6
I øvrigt får jeg en "SettingsPropertyNotFoundException" når jeg forsøger dit eksempel (Hvis "Mapping navn" og property navn ikke stemmer overens).
Avatar billede sholm Nybegynder
22. november 2006 - 15:02 #7
For dælen da nu virker det :)

Det har virket hele tiden bare mig der har lavet det sværer end det egentligt var...

Mange tak for hjælpen. Fik det godt nok til at virke med Application Scope også - smid endelig et svar.
Avatar billede bulgroz Nybegynder
22. november 2006 - 15:16 #8
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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