Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - lettura e gestione dei valori di setting in c#
Forum - C# / VB.NET - lettura e gestione dei valori di setting in c#

Avatar
alip1 (Normal User)
Pro


Messaggi: 139
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 12:00
Venerdì, 21/07/2023
Buongiorno approfitto ancora una volta della vs squisita disponibilità per chiedervi se e come sia possibile gestire a run time in c# i valori di settings definiti a livello di progettazione in properties.settings.settings. in VB si utilizza My.Settings ma in c# cosa occorre fare?? Gli esempi della microsoft non specifono con esattezza la procedura: ad esempio per settare  una stringa dicono di fare:
Codice sorgente - presumibilmente Plain Text

  1. Properties.Settings.Default.FirstUserSetting = "abc";
  2. Properties.Settings.Default.Save();


ma non funziona anzi mi da subito errore perché questi oggetti non sono conosciuti...

se nel settings.settings a livello di progettazione o definito Name: LicenseCode - Type: string  - Scope: User - Value: Abcd23456Sr

ome si fa a leggere la stringa settata ed eventualmente cambiarla a runtime???
Grazie a tutti

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1370
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 16:10
Venerdì, 21/07/2023
I nomi dei setting personali vanno creati, come già sai.
In Esplora soluzioni clicca con il tasto desto sopra al nome del progetto e scegli Properties.
Sulla pagina delle proprietà scegli Setting e imposta Name, Type e Scope, vedi foto allegata (VS2012 in Italiano).
Se su Scope scegli User i valori vengono salvati per l'utente in uso.

Codice sorgente - presumibilmente C#

  1. public partial class Form1 : Form
  2. {
  3.         public Form1()
  4.         {
  5.             InitializeComponent();
  6.             string nomeEpass = Properties.Settings.Default.nomeUtente + Environment.NewLine + Properties.Settings.Default.pswUtente;
  7.             MessageBox.Show(nomeEpass);
  8.         }
  9.  
  10.         private void button1_Click(object sender, EventArgs e)
  11.         {
  12.             Properties.Settings.Default.nomeUtente = "Carlo";
  13.             Properties.Settings.Default.pswUtente = "2222";
  14.             Properties.Settings.Default.Save();
  15.             string nomeEpass = Properties.Settings.Default.nomeUtente + Environment.NewLine + Properties.Settings.Default.pswUtente;
  16.             MessageBox.Show(nomeEpass);
  17.         }
  18. }



In questo esempio se imposti i valori come in foto allegata, al primo avvio messagebox mostra:
alip1
1111
se clicchi button1, modifichi i setting li mostri e li salvi, ai successivi riavvii messagebox mostrerà:
Carlo
2222
finquando non rimodifichi i setting.


Carlo ha allegato un file: impostazioni (setting).jpg (59267 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da Carlo il 23/07/2023 alle 3:16


in programmazione tutto è permesso
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1370
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 16:37
Venerdì, 21/07/2023
Testo quotato

Postato originariamente da alip1:
se nel settings.settings a livello di progettazione o definito Name: LicenseCode - Type: string  - Scope: User - Value: Abcd23456Sr

ome si fa a leggere la stringa settata ed eventualmente cambiarla a runtime???
Grazie a tutti


lettura:
string code = Properties.Settings.Default.LicenseCode;
scrittura e salvataggio:
Properties.Settings.Default.LicenseCode = "NuovoValore";
Properties.Settings.Default.Save();



in programmazione tutto è permesso
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 139
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 13:46
Sabato, 22/07/2023
Testo quotato

Postato originariamente da Carlo:
Testo quotato

Postato originariamente da alip1:
se nel settings.settings a livello di progettazione o definito Name: LicenseCode - Type: string  - Scope: User - Value: Abcd23456Sr

ome si fa a leggere la stringa settata ed eventualmente cambiarla a runtime???
Grazie a tutti


lettura:
string code = Properties.Settings.Default.LicenseCode;
scrittura e salvataggio:
Properties.Settings.Default.LicenseCode = "NuovoValore";
Properties.Settings.Default.Save();




Grazie. Quindi non occorre nessun using?

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1370
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 15:03
Sabato, 22/07/2023
Testo quotato

Postato originariamente da alip1:
Quindi non occorre nessun using?


Nell'esempio precedente ho usato: Environment.NewLine che ha bisogno di using System;
se l'using è omesso basta scrivere: System.Environment.NewLine
Properties.Settings.Default non ha bisogno di using.

Visto che stai progettando in WindowsForm un'altro using consigliabile è:
using System.Windows.Forms;

Gi using servono per risparmiare codice nessuno obbliga il loro inserimento.

Il codice:
Codice sorgente - presumibilmente C#

  1. using System;
  2. using System.Windows.Forms;
  3.  
  4. namespace Setting
  5. {
  6.     public partial class Form1 : Form
  7.     {
  8.         public Form1()
  9.         {
  10.             InitializeComponent();
  11.             string nomeEpass = Properties.Settings.Default.nomeUtente +
  12.                                Environment.NewLine + Properties.Settings.Default.pswUtente;
  13.             MessageBox.Show(nomeEpass);
  14.         }
  15.  
  16.         private void button1_Click(object sender, EventArgs e)
  17.         {
  18.             Properties.Settings.Default.nomeUtente = "Carlo";
  19.             Properties.Settings.Default.pswUtente = "3333";
  20.             Properties.Settings.Default.Save();
  21.             string nomeEpass = Properties.Settings.Default.nomeUtente + Environment.NewLine + Properties.Settings.Default.pswUtente;
  22.             MessageBox.Show(nomeEpass);
  23.         }
  24.     }
  25. }



senza using, diventa:
Codice sorgente - presumibilmente C#

  1. namespace Setting
  2. {
  3.     public partial class Form1 : System.Windows.Forms.Form
  4.     {
  5.         public Form1()
  6.         {
  7.             InitializeComponent();
  8.             string nomeEpass = Properties.Settings.Default.nomeUtente +
  9.                                System.Environment.NewLine + Properties.Settings.Default.pswUtente;
  10.             System.Windows.Forms.MessageBox.Show(nomeEpass);
  11.         }
  12.  
  13.         private void button1_Click(object sender, System.EventArgs e)
  14.         {
  15.             Properties.Settings.Default.nomeUtente = "Carlo";
  16.             Properties.Settings.Default.pswUtente = "3333";
  17.             Properties.Settings.Default.Save();
  18.             string nomeEpass = Properties.Settings.Default.nomeUtente + System.Environment.NewLine + Properties.Settings.Default.pswUtente;
  19.             System.Windows.Forms.MessageBox.Show(nomeEpass);
  20.         }
  21.     }
  22. }


Ultima modifica effettuata da Carlo il 22/07/2023 alle 15:42


in programmazione tutto è permesso
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 139
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 11:25
Sabato, 29/07/2023
Testo quotato

Postato originariamente da Carlo:

Testo quotato

Postato originariamente da alip1:
Quindi non occorre nessun using?


Nell'esempio precedente ho usato: Environment.NewLine che ha bisogno di using System;
se l'using è omesso basta scrivere: System.Environment.NewLine
Properties.Settings.Default non ha bisogno di using.

Visto che stai progettando in WindowsForm un'altro using consigliabile è:
using System.Windows.Forms;

Gi using servono per risparmiare codice nessuno obbliga il loro inserimento.

Il codice:
Codice sorgente - presumibilmente C#

  1. using System;
  2. using System.Windows.Forms;
  3.  
  4. namespace Setting
  5. {
  6.     public partial class Form1 : Form
  7.     {
  8.         public Form1()
  9.         {
  10.             InitializeComponent();
  11.             string nomeEpass = Properties.Settings.Default.nomeUtente +
  12.                                Environment.NewLine + Properties.Settings.Default.pswUtente;
  13.             MessageBox.Show(nomeEpass);
  14.         }
  15.  
  16.         private void button1_Click(object sender, EventArgs e)
  17.         {
  18.             Properties.Settings.Default.nomeUtente = "Carlo";
  19.             Properties.Settings.Default.pswUtente = "3333";
  20.             Properties.Settings.Default.Save();
  21.             string nomeEpass = Properties.Settings.Default.nomeUtente + Environment.NewLine + Properties.Settings.Default.pswUtente;
  22.             MessageBox.Show(nomeEpass);
  23.         }
  24.     }
  25. }



senza using, diventa:
Codice sorgente - presumibilmente C#

  1. namespace Setting
  2. {
  3.     public partial class Form1 : System.Windows.Forms.Form
  4.     {
  5.         public Form1()
  6.         {
  7.             InitializeComponent();
  8.             string nomeEpass = Properties.Settings.Default.nomeUtente +
  9.                                System.Environment.NewLine + Properties.Settings.Default.pswUtente;
  10.             System.Windows.Forms.MessageBox.Show(nomeEpass);
  11.         }
  12.  
  13.         private void button1_Click(object sender, System.EventArgs e)
  14.         {
  15.             Properties.Settings.Default.nomeUtente = "Carlo";
  16.             Properties.Settings.Default.pswUtente = "3333";
  17.             Properties.Settings.Default.Save();
  18.             string nomeEpass = Properties.Settings.Default.nomeUtente + System.Environment.NewLine + Properties.Settings.Default.pswUtente;
  19.             System.Windows.Forms.MessageBox.Show(nomeEpass);
  20.         }
  21.     }
  22. }




l'struzione
Codice sorgente - presumibilmente C# / VB.NET

  1. string nomeEpass = Properties.Settings.Default.nomeUtente + System.Environment.NewLine + Properties.Settings.Default.pswUtente;



è utilizzabile ovunque, anche in una classe o è obbligatorio usarla in un form?? grazie

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1370
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 13:51
Sabato, 29/07/2023
Testo quotato

Postato originariamente da alip1:

l'struzione
Codice sorgente - presumibilmente C# / VB.NET

  1. string nomeEpass = Properties.Settings.Default.nomeUtente + System.Environment.NewLine + Properties.Settings.Default.pswUtente;



è utilizzabile ovunque, anche in una classe o è obbligatorio usarla in un form?? grazie



Si.
Se hai una classe:
Codice sorgente - presumibilmente C#

  1. using System;
  2.  
  3. namespace Setting
  4. {
  5.     public class Class1
  6.     {
  7.         public static string nomeEpass { get; set; }
  8.  
  9.         public static void leggi ()
  10.         {
  11.             nomeEpass = Properties.Settings.Default.nomeUtente + Environment.NewLine + Properties.Settings.Default.pswUtente;
  12.         }
  13.     }
  14. }



Il codice sotto a button1 diventa:

Codice sorgente - presumibilmente C# / VB.NET

  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3.     Properties.Settings.Default.nomeUtente = "Carlo";
  4.     Properties.Settings.Default.pswUtente = "3333";
  5.     Properties.Settings.Default.Save();
  6.     Class1.leggi();
  7.     MessageBox.Show(Class1.nomeEpass);
  8. }




Ultima modifica effettuata da Carlo il 29/07/2023 alle 14:13


in programmazione tutto è permesso
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 139
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 11:52
Domenica, 22/10/2023
Grazie Carlo buona domenica

PM Quote