.NET winForm (C# e VB)

Soluzioni e problemi affrontati durante lo sviluppo di applicazioni windows form

My 2 cents per il Model View ViewModel.

In questi giorni sto lavorando, o meglio, sto studiando il VMMV perche’ dovro’ a breve sviluppare una media applicazione in WPF e vorrei proprio farlo usando WPF, L2S e il VMMV. Sto leggendo un po’ di articoli e ci sono alcune cose che vorrei sottolineare, perche’ ogni qual volta che si parla di un nuovo pattern salta fuori il guru della situazione, e spesso vedo delle vere e proprie fesserie scritte sui blogs. Inanzi tutto consiglio a tutti una visita al blog di Martin Fowler, specialmente a questo articolo: presentation model. Dico solamente una cosa,...

WPF e il View model, qualche risorsa utile.

Finalmente mi sono deciso, anche perche’ mi devo preparare alle nuove MCPD e quindi ho iniziato a lavorare con WPF. Devo dire che il pattern MVVM e’ davvero interessante anche se io ho gia’ intenzione di metterci dentro una mia deviazione. Ci sono un paio di cose allo stile MVC che non mi gustano molto. Inoltre gli stili, il binding e la gestione fantastica del layout in stile markup mi piace davvero molto. Peccato che sia Kaxaml che VS lasciano ancora a desiderare con l’ intellisense, ma vedremo piu’ avanti. Anyway, per chi fosse interessato ho trovato in rete...

Fluent NHibernate.

Non ho neanche 1 minuto di cazzeggio ma al posto di guardare la televisione preferisco sempre andarmi a leggere qualcosa di utile. Magari ho scoperto l’ acqua calda, ma sono caduto su questo wiki: http://wiki.fluentnhibernate.org. Lo trovo davvero un progetto interessante per i seguenti motivi: Finalmente e’ stato abolito il fastidiosissimo uso di file XML che portano ad una notevole generazione di bugs in fase di compilazione (a meno che qualcuno riesca a fare i test anche sui file di configurazione di NHibernate). Possiamo finalmente lavorare a runtime sulla configurazione...

Visual Studio 2008 + MSDN Premium con sconto 40%.

La notizia mi e' stata passata questa mattina da un redattore del sito www.html.it e devo dire che e' davvero interessante. Microsoft ha rilasciato un giochino simpatico in Silverlight e i vincitori potranno usufruire di uno sconto fino al 40% su una licenza Visual Studio 2008 con la MSDN Premium abbinata. Potete leggere l' articolo redatto da HTML.it qui, mentre il gioco e' a questo indirizzo. Che dire, che vinca il migliore!

Finalmente la richiesta e' arrivata.

Dopo aver inquinato tutti i pub dell' isola parlando di NET, mi e' arrivata la proposta proprio questa sera. Raf, what do you think, do you wanna open a NET Bermuda User Group? Oddio, ma saro' in grado di prendermi carico di un impegno cosi' grosso?

TFS 2008 SP1 su Windows 2008 con SQL 2008.

Settimana scorsa mi sono cimentato nell' installazione di TFS 2008 SP1 (e' richiesta per SQL 2008) su una macchina Windows Server 2008 con SQL Server 2008. Se seguita la guida ufficiale, passo passo, e vi ricordate di includere la SP1 nel package di installazione, beh tra permessi lazzi e mazzi ve la cavate in circa 4 ore (Lorenzo lo so, tu sei un mago, io avevo una macchina x86 ... da preparare come Stand Alone). Anyway, se vi interessa, qui ho pubblicato una mini-guida all' installazione di questo prodotto fantastico!! Adesso non voglio piu' sentire parlare di SubVersion o altre ca....ine imparagonabili ad...

SubVersion, Visual Studio 2008. La mia esperienza.

Technorati Tag: SubVersion,Visual Studio,VisualVSN Non posso certo permettermi di mettere in discussione prodotti come TFS (Team Foundation Server) che non hanno eguali, ma ho voluto partecipare alla discussione sul gruppo UGIALT di una via alternativa ai Repositories messi a disposizione da casa Microsoft. Un primo problema che ho dovuto affrontare è stato quello economico, ho un piccolo Team e non posso acquisire un prodotto come TFS perchè purtroppo non esiste una MSDN Subscription e altre problematiche burocratiche. Ho quindi pensato ad una via alternativa che per me è stata SubVersion. Di seguito vi elenco i prodotti...

Reporting Services, tutti i record o filtrati per ID

Technorati Tag: Reporting Services,GroupBy,Filtri Normalmente quando si sviluppa la parte di reportistica di un programma, la prima problematica che bisogna affrontare è proprio quella legata alla selezione di uno, tutti o qualche records. Le soluzioni sono svariate, certo che costruire un report per un singolo record ed uno per tutti, mi sembra un po' eccessivo. Nel mio caso, molto molto semplice, dovevo produrre dei formulari anagrafici e quindi l' utente finale deve poter stampare uno, tutti o qualcuno. Pensiamo alla struttura dati, per prima cosa, davvero semplice come quella sotto: A questo punto...

ReportViewer, qualche Tips.

Technorati Tag: ReportViewer,Tips Dando uno sguardo in giro ho visto che spesso molti DEV incappano in queste problematiche con il controllo ReportViewer presente sia in Visual Studio 2005 che in Visual Studio 2008, che è in grado di visualizzare 2 tipologie di Reports. La prima con estensione (.rdlc) è composta dai reports che possiamo creare all' interno di VS e la seconda (.rdl) è composta dai Reports creati con i Reporting Services di MS SQL 2005 o superiore. Visualizzare la Preview Per la preview del nostro report, basta dire al report viewer che: private void InitializeMargin() ...

I Nullable questi strani cosi ...

Technorati Tag: Nullable Ah ah mi scrivo la mia bella entity tutta ordinata con il codice del tipo: 1 private Nullable<DateTime> data; 2 public Nullable<DateTime> Data 3 { 4 get 5 { 6 ...

Le Collection, meglio chiarire i dubbi.

Technorati Tag: System.Collections,.NET Questo post nasce dal fatto che troppo spesso vedo codice non sfruttato, del tipo, un ArrayList per memorizzare 4 valori stringa, o peggio, una generic List<String> per memorizzare magari un semplice array di stringhe. Mi è sembrato quindi opportuno fare il punto della situazione, con questo post, nel quale voglio semplicemente dire che il Namespace System.Collections ... è un Namespace e non una classe, quindi magari al suo interno possiamo trovare diversi oggetti ... e non solo ArrayList e List<T>. Collezione ...

C# 3.0 Design Pattern, un primo libro

Con l' annuncio del nuovo linguaggio non poteva mancare un primo libro che fornisce pratici esempi di Design Pattern applicabili al linguaggio C# 3.0. A questo Indirizzo la presentazione del testo in lingua Inglese. Già disponibile su portali come Amazon.com.

Linq to Ldap, startup.

Technorati Tag: LinQ,LinQ to Ldap Come avrete notato, ultimamente sto dedicando parecchio del mio tempo al Framework 3.0/3.5 ed in particolar modo alla sezione legata a Linq, per lo meno ci sto provando. Oltre all' ormai stranoto LinqToSql esiste un progetto OpenSource che potete trovare su CodePlex a questo indirizzo che si chiama LinqToLdap. Già dal nome è tutto un programma!! Ebbene si' grazie a questa versione di Linq, o meglio a questo componente che a sua volta sfrutta la potenza di Linq, è possibile fare delle bellissime query in ActiveDirectory e ricevere una bella IList<>...

ActiveSearcher, userAccountControl e valori

Technorati Tag: DirectorySearcher,userAccountControl La proprietà userAccountControl indica se un utente è : Abilitato / Disabilitato La sua password ha scadenza o no Il tutto viene indicato tramite una serie di valori numerici che possiamo decodifcare in questo modo : Valore Numerico Stato 512 Account Enabled ...

Active Searcher, enumerare il tipo gruppo.

Technorati Tag: Active Directory,GroupType Per chi conosce Active Directory, è noto che i gruppi presenti in questo repository possono essere di 4 tipologie differenti. Global Group Domain Local Group Universal Group Security Group Ora pensiamo ad una semplice query Ldap con DirecotrySearcher per elencare tutti i gruppi presenti in AD. Dovremmo scrivere qualcosa del genere : foreach (SearchResult risultato in risultati) { DirectoryEntry de = risultato.GetDirectoryEntry(); GruppoWindows gruppo = new GruppoWindows(); gruppo.Nome = (string)de.Properties["name"].Value; gruppo.Sid = ConvertiSid((byte[])de.Properties["objectsid"].Value); gruppo.Descrizione = (string)de.Properties["description"].Value; gruppo.Type = (int)de.Properties["grouptype"].Value; La cosa assurda è...

DirectorySearcher, aggiungere o rimuovere oggetti.

Technorati Tag: Active Directory,DirectorySearch Lo sapevate che la classe DirectorySearcher non consente solamente la ricerca di oggetti in Active Directory, ma consente anche la loro manipolazione, quindi l' aggiunta, la modifica e la cancellazione di oggetti. Come? Per prima cosa bisogna connettersi ad AD con il codice seguente : //Creo la directory entry per la connessione this.entry = new DirectoryEntry(); entry.Username = Settings.Default.Username; entry.Password = Settings.Default.Password; entry.Path = "LDAP://xxx/OU=xxx,DC=xxx,DC=xxx,DC=xxx"; //Avviamo le ricerche using (DirectorySearcher searcher = new DirectorySearcher(this.entry)) { searcher.Filter = this.Filtro; searcher.Sort = new SortOption("samaccountname", SortDirection.Ascending); //Loop per i risultati foreach (Proprietà item in this.Proprietà) Adesso possiamo fare le nostre query. Ora proviamo a cancellare un oggetto. Una...

C# e Domain Driven

Finalmente ho trovato quel che mi serve per poter approfondire in maniera concreata questo Pattern nel linguaggio che piu' mi aggrada, ovver C#. http://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/product-description/0321268202 Sono ben accetti ulteriori consigli.

C# DataReader e GetSchema()

Technorati Tag: DataReader , GetSchema() Premesso che non uso, non usero' mai e poi mai il DataSet e il DataAdapter .... Quindi sto cercando di spremere al massimo quel che mi resta, il DataReader, che io personalmente ritengo una Manna dal Cielo. Questo grandissimo oggetto (IMHO) espone un metodo GetSchema() che deve essere eseguito dopo l' apertura della Connessione e l' esecuzione del Comando. DataTable schema = reader.GetSchemaTable(); La tabella di destinazione sarà popolata con diverse colonne, una per ogni Proprietà esposta dal Database per quella Colonna. Di seguito vi elenco il risultato ottenuto...

C# Drag and Drop tra Listbox.

La mia impresa di oggi si potrebbe definire titanica. Devo implementare all' interno di un programma la funzionalità di Drag and Drop tra due ListBox. Nulla di piu' semplice, se non fosse che la ListBox è l' unico controllo NET (di tipo List) a non esporre un evento ItemDrag ... Cominciamo con il popolare le due ListBox e selezioniamo la proprietà AllowDrop su true. A questo punto dobbiamo lavorare su un paio di eventi. Il primo sarà l' evento MouseMove. In questo evento dobbiamo intercettare quale item l' utente sta draggando da una ListBox verso l' altra....

Word embedded? Due soluzioni.

Technorati Tag: Word Authomation , Office PIA Vi è mai capitato di dover o meglio, di voler includere nelle vostre applicazioni documenti word compilati a run-time? Ma certo. Peccato pero' che con i PIA di office obblighiamo l' utente a dover utilizzare due eseguibili. Il nostro programma e nel mio caso, word.exe. La prima soluzione è quella di includere in una windows form il classico controllo WebBrowser e aprire in questo controllo il documento che vogliamo visualizzare. Molto semplice e veloce : if (File.Exists(this.Documento)) { Uri indirizzo = new...

PIA di Word e le FormFields

Una soluzione ottimale per lavorare con i prodotti del pacchetto Office tramite del buon codice C# (si anche con i PIA non uso VB.NET ...) è quello di usare gli Office PIA (ovvero, Office Primary Interop Assembly). Grazie al buon Lorenzo ho scoperto che è possibile usare intellisense per questi interop (link). Comunque, tornando a noi, in questi giorni ho avuto la necessità di dover compilare a run-time dei documenti di word con diverse FOrmFields, ovvero con dei Campi Modulo. In questo modo ci basta creare un bel .dot come modello con tutte le nostre field e poi le...

C# e il controllo TabControl.

Come molti di voi ben sanno, il NET Framework fornisce un controllo denominato TabControl che non è altro che un particolare Pannello in grado di contenere n TabPage. A loro volta, un TabPage è un ulteriore Pannello che puo' contenere a sua volta n controlli. Fin qui ho scoperto l' acqua calda. Veniamo al dunque. Oggi ho la necessità di abilitare le successive Pagine del mio controllo solo dopo aver fatto una determinata operazione. Usando C# (non so se anche con VB succede) nell' IntelliSense manca la Proprietà enabled per una determinata TabPage ma con una...

CrystalReport, C# e DiscreteParameter.

Sono diversi anni che lavoro con CrystalReport e credo non lo abbandonero' mai. Insomma se si impara ad usarlo correttamente, si possono produrre anche report efficienti in breve tempo. Stranamente oggi sto sbattendo la testa su un problema basilare e decisamente stupido, del quale pero' ne sono venuto a capo e voglio rendervi partecipi. Allora, per prima cosa dobbiamo parlare di questi DiscreteParameters. In pratica CR ci consente di creare dei controlli nel nostro report che riceveranno uno o piu' valori a run-time, ma non dal DBMS a cui è collegato, ma dal codice ... Il mio problema oggi era che...

Asyncrono con C#

Oggi voglio affrontare l' argomento delle chiamate Asyncrone. Prima una piccola e breve premessa. Spesso ci capita di dover eseguire del codice ma senza bloccare l' applicazione che lo sta eseguendo. Allo stesso tempo vorremmo magari poter gestire e monitorare l' esecuzione di questo codice. Altre volte la necessità è quella di eseguire diverse operazioni simultaneamente, o magari, vorremmo che una volta eseguita un' operazione in BackGround, al suo termine vorremmo eseguirne un' altra. Insomma, spesso ci capita di voler lavorare in MiltiThreading. Oggi avro' il piacere di illustrarvi come usando C# e il NET Framework. Per prima cosa dobbiamo...

DataTable da DataReader con AS400.

Oggi non ho voglia di sprecare inutilmente oggetti ...Quindi siccome devo creare una classe per accedere a dei dati su un sistema remoto di tipo AS400, ecco cosa mi è venuto in mente. Per prima cosa mi serve una classe, che ho chiamato Mik_as400. Non sto qui a spiegare la logica della sintassi che uso. Mi dichiaro qualche Fields che non fa mai male :private String _connString; private iDB2Connection dbConn; private iDB2Command dbCmd; private iDB2DataReader dbDr; private iDB2DataAdapter dbDa; Fatto cio', ho bisogno di un metodo che mi Costruisce la DataTable, perchè io non conosco i nomi dei campi della mia query ... private DataTable...

La sicurezza ... dal cliente.

Il cliente dal quale lavoro attualmente adotta la Policy piu' strana in assoluto per gestire la sicurezza. In questo momento sto sviluppando un' interfaccia NET per operare su dati remoti di un sistema AS400. La solita zuppa insomma.La prima cosa, molto strana, è che con il mio PC di consulente non posso connettermi alla rete, specifico, alla rete non al dominio.Quindi per emulare i dati ho dovuto esportare un file XML di 1Gb da AS400 verso il mio laptop. A questo punto ho sviluppato 2 Business Layer perl' accesso ai dati, uno per la base dati XML e uno per quella...

Esecuzione di DTS in Visual Studio 2005. #1 parte.

In questi giorni, appena tornato da una settimana di pacchia, ho dovuto subito affrontare un quesito particolare. Ovvero, quello di riuscire a far eseguire una vecchia tecnologia da una nuova. In questo caso la vecchia tecnologia sono le DTS (Data trasformation ...) di SQL 2000 e la nuova il NET 2. Per prima cosa, dobbiamo dire che per poter eseguire una DTS da NET Framework 2 dobbiamo utilizzare la vecchia tecnologia COM. Per fare cio' dobbiamo recuperare dal Server che espone SQL 2000 la dll dtspkg.dll. Essendo questa una dll in vecchio stile, non sarà sufficiente aggiungerla nelle referenze del...

Progammero' con WF.

Questa news è dell' ultimo minuto. Sono appena stato ad un Meeting nel quale mi è stato richiesto di implementare una logica a WorkFlow sul portale SharePoint 2007. Niente di meglio di utilizzare una nuova tecnologia quale WF. Ho trovato interessate il Post introduttivo di ScottGu. Nel suo blog chiaramente. Per adesso devo solamente introdurre uno studio di fattibilità. Quindi se qualcuno di voi ha del materiale on-line, sono ben accetti consigli e suggerimenti. Nota: Accetto volentieri anche un 'In Bocca al Lupo ..'