Nella gestione delle risorse (stringhe, immagine etc) , Visual Studio 2005 ci aiuta molta generando in automatico una classe che ci permette di accedere in modo semplice alle risorse stesse.
Tuttavia la visibilità di queste classi é internal. Se volessi ottenere delle classi pubbliche dovrei utilizzare resgen con l'opzione /publicClass.... ma addio integrazione ed automatismi
Questo un comodo tool che risolve alcuni limitazione del ResXFileCodeGenerator di Visual Studio 2005 (tra cui quella riportata sopra) : http://dmytro.kryvko.googlepages.com/
Prendo nota di questo indirizzo che mi tornerà utile http://www.microsoft.com/sql/ctp_sqleverywhere.mspx; riguarda Sql Server 2005 Everywhere Edition.
Risulta utile in tutte quelle applicazioni dove è necessario fornire delle funzionalità da "database" ma senza aver un server a disposizione e in modo del tutto trasparente all'utente(semplicità di installazione, nessuna configurazione da fare, etc etc). Fino ad adesso la mia scelta era caduta sul buon firebird embedded: la distribuzione consisteva nel copiare una semplice dll da un paio di mega. Da quel che ho letto Sql Server Everywhere dovrebbe fare all'incirca la stessa cosa, ma dovrebbe avere la possibilità di garantire una maggior sicurezza del file dati, mediante password e criptature a 128 bit, cosa che manca a firebird embedded.
Appena ho un pò di tempo lo proverò.
Ciao a tutti, oggi ho "sudato freddo" per uno strano comportamento del designer.
Sto utilizzando Visual Studio 2005 per svilupapre un'applicazione WinForms in C#.
Ad un tratto, in fase di design i menù e le toolbar( anzi toolstrip e menustrip) non vengono più visualizzate "nel bel colore blu" ma in semplice colore "control". Eseguendo il programma queste però vengono visualizzate correttamente.
Ho recuperato versioni precedenti del progetto, e anche su queste si manifestava lo stesso problema.
Ho aggiunto al progetto una form vuota, inserito la toolbar ed il problema persisteva.
Riavviato il pc, ancora lo steso problema.
Ho creato un nuovo progetto, aggiunto form con toolbar e questa volta veniva visualizzata correttamente.
Ho riaperto il progetto col problema e fortunatamente tutto veniva visualizzato correttamente.
Tutto è bene quel che finisce bene....
In Visual Studio 2005 è immediato gestire le impostazioni della propria applicazione. Infatti il designer offre la possibilità di impostare un binding (mediante la sezione application settings dell'editor di proprietà ) fra le proprietà dei componenti e il file di impostazioni dalla propria applicazione. Non voglio spiegare come funziona il tutto (è ampiamente spiegato nell'help) ma voglio esporre un piccolo problema in cui mi sono imbattuto.
Utilizzando il nuovo e colorato ToolStripMenuItem, è possibile creare dei menù con a lato il segno di spunta. Supponiamo di voler memorizzare nel file lo stato del ToolStripMenuItem. In un primo momento, preso da pigrizia, utilizzo il property editor, e collego la proprietà "CheckState" ad un campo del mio file di impostazione. Scrivo il codice per salvare il tutto nell'evento formclosing, compilo la mia applicazione e la provo. Non ottengo l'effetto sperato, ad ogni avvio della mia applicazione lo stato del ToolStripMenuItem è quello di default. Perchè?
Andiamo a vedere il codice che genera Visual Studio :
this.tsmTest.CheckState = global::TestProperties.Properties.Settings.Default.testTsm;
Lo confronto con il codice generato per un CheckBox
this.chkTest.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::TestProperties.Properties.Settings.Default, "test1", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
La causa del problema è chiara, cioè il valore “Checked” del toolStripMenuItem tsmTest, non viene messo in binding, ma viene smplicemente impostato con il valore memorizzato nel file di impostazioni. Un rapida ricerca in MSDN ed è spiegato il perché:
mentre il CheckBox, deriva da Control, che implementa l’interfaccia IBindableComponent , il toolStripMenuItem non deriva da Control (deriva da Component àToolStripMenu) e cosa ben più importante non implementa l’interfaccia IBindableComponent: pertanto non è possibile impostare un binding su di esso.
Quindi devo gestirmi manualmente il salvataggio dello stato del mio ToolStripMenu , scrivendo ad esempio il seguente codice nell’evento formclosing
Properties.Settings.Default.testTsm = tsmTest.CheckState;
Properties.Settings.Default.Save(); //salvo le impostazioni
Bisogna anche prestare attenzione al fatto che per il ToolStripMenuItem, non essendo messo realmente in binding, gli eventi legati alle impostazioni (SettingChanging, SettingsSaving…) non vengono generati. Con riferimento all’esempio di prima, ogni volta che cambio il “CheckState” del mio toolstripmenuitem l’evento SettingChanging non viene generato.
Visto che questo è il primo blog che apro/utilizzo/scrivo etc etc, mi sembra più che giusto iniziare con un bel "hello world!" per vedere se tutto funziona!