Press "Enter" to skip to content

Category: Intermediate

Creare, attivare, disattivare controlli a runtime

In risposta ad una domanda posta su Stack overflow  dove un utente chiedeva come creare dei controlli a runtime che simulino una ShowDialog, visto che mi sembrava una richiesta interessante a cui rispondere ho creato un piccolo esempio che effettua esattamente questo. Vediamo come ho fatto.

mainwindow_01

La main window simula un programma con varie funzionalità sulla finestra principale. Lo spazio vuoto è destinato ad accogliere gli user control generati a runtime. Le textbox ed i bottoni sulla sinistra non hanno alcuna funzionalità, mentre i tre bottoni in basso creano i controlli “showdialog”.

Comments closed

Convertire un file XML o JSON in un foglio di Excel

Visto che ho postato come fare il contrario, e visto che la documentazione su EpPlus è davvero scarsa, ho deciso di postare anche l’esempio contrario, ovvero come generare un foglio di Excel elaborando una collection che abbiamo recuperato leggendo un file XML oppure un file JSON. Ovviamente mi limiterò alle basi, ma EpPlus è in grado di aiutarci a produrre dei fogli excel anche molto complessi e contenenti non solo semplici dati tabellari ma grafici, pivot e molto altro.

Ho pubblicato qualche post fa un esempio d’uso degli oggetti di stampa di .Net per windows forms, ma normalmente, gli output dei miei programmi sono più spesso dei fogli di Excel, principalmente perché lavorando su progetti che riguardano l’analisi e la trasformazione di dati grezzi in dati di qualità, quello che io produco solitamente viene ulteriormente elaborato da chi riceve gli output. E’ comunque buona cosa per chiunque faccia programmi per il mondo delle aziende pensare di inserire in modo standard la possibilità di effettuare un output dei dati che elaboriamo su un foglio di Excel.

mainwindow_01

Comments closed

Come Usare due diverse liste per pilotare un singolo dettaglio

Questo esempio è stato creato in risposta ad un thread sul forum Microsoft che riguardava Un problema sull’assegnare il focus su una maschera con due liste in realtà il problema non è il focus sulle Liste, ma un problema un po’ più “tricky” più complicato e legato alla gestione del databinding.

Questo esempio mostra come aggirare questo tipo di problema, ma poi mostro anche come approccerei in modo diverso l’interfaccia per evitare il problema, vediamo intanto cosa abbiamo creato e come funziona e poi discuteremo una possibile alternativa allo scenario.

mainwindow_01

Da quanto indicato da chi ha posto il quesito sul forum, la sua interfaccia per la messaggistica interna all’azienda ha una finestra con due liste, messaggi IN e messaggi OUT, al click di un messaggio, il suo contenuto viene visualizzato nella parte di dettaglio.  Il problema segnalato è che quando l’utente passa da una lista all’altra il messaggio selezionato non cambia sempre e quindi l’utente non comprende cosa sta guardando.

Vediamo come abbiamo implementato la parte XAML.

Comments closed

Sql Server 2012 Installazione su Windows 10

Installare SQL Server non è una operazione che si fa quotidianamente, ma in questo periodo l’ho fatto per due volte passando a Windows 10 le macchine di sviluppo pertanto ho deciso di scrivere un po’ di appunti perché per installare una versione che ormai possiamo definire “vecchia” di SQL Server come la 2012 ci sono un paio di cose da sapere e saper fare. L’installazione di SQL è una cosa ricorsiva nei miei blog, perché succede spesso che venga interpellata in luoghi ove l’installazione è stata effettuata senza ricordare i 3 o 4 passaggi fondamentali e per questo si deve perdere del tempo per rimetterla a posto perciò visto che prevenire è sempre meglio che curare ecco come si fa.

Perchè installare SQL Server 2012 e non 2014 o 2016? Perché al momento, SQL Server 2012 è ancora quello più utilizzato da tutti i miei clienti, pertanto per essere in grado di ricevere i loro database, elaborarli e restituirli (nel tipo di lavoro che faccio io accade spesso) non posso utilizzare un server più recente del loro perché l’operazione di Attach del database ad un server più recente ne modifica la struttura e quindi in seguito non è più compatibile con quello del cliente. Ci sono sicuramente dei mezzi per aggirare il problema, ma nel mio caso, evitare è meglio che aggirare.

Comments closed

Generare Dinamicamente Controlli da codice

Si tratta di un esempio in risposta ad una richiesta sul forum Microsoft,  Questo è il link al thread in cui un principiante ha dapprima postato un problema e una volta risolto il problema contingente, ha spiegato che vorrebbe realizzare un programma per fare quiz in cui inserire i quiz su dei file di testo e da questi creare al volo i controlli sulla form per fare le domande.

La mia risposta è stata che non si tratta della soluzione migliore, quella di creare tutti i controlli al volo, e in questo articolo vediamo un esempio di come si fa e perché non la considero la soluzione più usabile per creare una applicazione.

In seguito posterò un esempio di come risolverei la cosa in modo meno complicato.

Comments closed

Implementare un Data Provider SQL Server usando ADO.Net

Nei post di quest’anno, iniziando ad aprile, ho creato un piccolo database SQL Server per dimostrare come utilizzare gli script T-SQL per generare gli oggetti dentro a SQL Server, poi ho proseguito, creando un sistema composto da un Servizio Windows e da una Console WPF che permettono di simulare una versione minimale dell’Agent di SQL Server per eseguire operazioni schedulate su SQL Server ed ho usato lo sviluppo di queste due applicazioni per spiegare una serie di concetti, spero utili, costruendo mattone per mattone l’applicazione WPF ed il Servizio Windows funzionanti ed installabili su qualsiasi PC o Server. Adesso è venuto il momento di riprendere in mano il Database definito nella serie iniziale di Post di quest’anno, e implementare per prima cosa una interfaccia WPF che ci permetta di inserire e modificare il suo contenuto.

Comments closed

ListBox, WPF, GetHashCode e Strani comportamenti

La scorsa settimana, ero in ferie quindi mi sono dedicata a produrre qualcosa di nuovo per Dotnetwork, proseguendo con i tutorial dedicati a classi, librerie, applicazioni, servizi e database, visto che era arrivato il momento di iniziare a lavorare con i Dati, dopo aver costruito il necessario a manipolare e gestire un database, ho iniziato a studiare il metodo più semplice per costruire una classe Data Provider in grado di fornire le operazioni base di CRUD (CReate, UpDate, Delete) su una tabella database SQL Server evitando di dover chiamare in causa immediatamente Entity Framework, ma utilizzando POCO (Plain Old COde) e soprattutto poco codice davvero.

Ultimata la classe Data Provider e quanto necessario al suo utilizzo, ho iniziato a creare una User Interface per il nostro database Recipes, che abbiamo iniziato a vedere una cinquantina di post or sono, come esempio per la creazione di un database funzionante utilizzando solo T-SQL. Ho utilizzato quanto sviluppato fino ad ora nelle librerie base Dotnetwork ed ho creato un’ interfaccia di base, e il primo User Control per una tabella Sql Server.

Comments closed

Utility e User Experience in WPF

In questo progetto implementeremo una semplice utility per verificare la target platform delle Dll e degli Exe memorizzati su una cartella e ne approfitteremo per mostrare come utilizzare la classe AutoSettingsManager già  implementata nella console del MiniSqlAgent, per migliorare la User Experience. Inoltre, visto che è un utility che possiamo “utilizzare” creiamo anche il setup della stessa utilizzando InnoSetup e mostriamo come utilizzare Visual Studio per effettuare la build del setup grazie ai Post Build Events.

Comments closed

16 – MIniSqlAgent – Modificare i Job per poter gestire il Timeout

In quanto sviluppato fino ad ora per creare un servizio in grado di eseguire script SQL su un Sql Server in modo schedulato, abbiamo predisposto tutto quanto per una esecuzione molto semplice, lasciando al client ADO e alla configurazione del Server SQL il compito di decidere come eseguire gli script. In questo post, aggiungeremo un parametro di controllo fondamentale per i Jobs, ovvero la possibilità di decidere dopo quanto tempo la connessione andrà in timeout se non riuscirà a completare un Job.

Comments closed

15 – MiniSqlAgent – Implementare il servizio per eseguire Job Schedulati su SQLServer

Alla distanza di 42 post dall’inizio della serie di quest’anno, arriviamo finalmente al post più importante per concludere lo sviluppo della versione 1.0 di MiniSqlAgent, un Servizio Windows in grado di eseguire in modo schedulato degli script SQL su qualsiasi SqlServer simulando in versione minimalista il Sql Server Agent. In questo post implementeremo quanto necessario ad effettuare le seguenti operazioni:

  • Allo startup del servizio leggere tutti i Job memorizzati sulla cartella dati del servizio ed inserirli in una collection.
  • Impostare un file system watcher che controlli se vengono aggiunti, cancellati, modificati dei Job sulla cartella dati riportando gli aggiornamenti sulla collection.
  • Impostare il Loop di servizio in modo tale che controlli se vi sono Job da eseguire e li esegua.
Comments closed