Crad's .NET Blog

L'UGIblog di Marco De Sanctis
posts - 190, comments - 457, trackbacks - 70

Windows Forms

Volete organizzare tutti i Technorati Tags in pochi minuti?

Bene, allora la nuova versione di Blog Manager (il nome è uno schifo, lo so) fa per voi! Qualche post fa, se ricordate, vi ho raccontato di un piccolo tool realizzato dal sottoscritto che, grazie ad un'interfaccia simil-Explorer, consente di riorganizzare velocemente tutte le categorie del blog facendo uso dei MetaWeblog API. Mi è sembrato così comodo che, dopo essere stato lì a compiacermi come un fesso (e senza cambiare le categorie), mi son detto: "ma perchè non fare lo stesso anche per i Technorati Tags, che son così pallosi da inserire nei post vecchi che ne sono sprovvisti? In...

posted @ mercoledì 26 settembre 2007 02:12 | Feedback (4) | Filed Under [ .Net 2.0 Misc Windows Forms ]

Cosa sarebbe il mondo senza NHDomainMapper?

Avvertenza: questo è un post autocelebrativo, Janky mi ha pagato profumatamente per scriverlo, quindi se vi farà venire il diabete prendetevela con lui. Windows Vista è quasi in RTM? Avete provato Orcas per la prima volta? Office 2007 lo usate già da un po'? Vi piace HappySign di Igor? STICA!!! Siete il nulla: sta per arrivare NHibernate Domain Mapper rel.0.1 alpha codename SUPERTANGA!! Ora, visto che un rilascio ufficiale non c'è ancora stato, purtroppo credo che difficilmente che ci sia qualcuno, oltre me e il bravo Sudano, in possesso di queste fantasmagoriche righe di codice C#. Tanto per dare un'ulteriore...

posted @ giovedì 5 ottobre 2006 01:29 | Feedback (6) | Filed Under [ .Net 2.0 NHibernate Visual Studio Windows Forms ]

A proposito del DataBinding nelle WinForms

Prendo spunto dal recente post di Corrado per dire che anche nelle Winforms è possibile utilizzare il databinding in senso "lato", ossia per impostare interazioni tra gli oggetti di una form piuttosto che per visualizzare informazioni provenienti da una fonte dati. Sappiamo benissimo che .NET ogni oggetto è utilizzabile come sorgente dati, quindi perché non utilizzare un Control come DataSource? Create una winform con una CheckBox e una ComboBox, poi, nel costruttore, scrivete: public Form1(){    InitializeComponent();        Binding b = new Binding("Enabled", checkBox1, "Checked");    this.comboBox1.DataBindings.Add(b);} Indovinate un po' cosa accade... powered by IMHO 1.3

posted @ venerdì 1 settembre 2006 12:20 | Feedback (5) | Filed Under [ .Net 2.0 Windows Forms ]

Caricamento di un oggetto Image da file

La creazione di un oggetto di tipo Image da un file nasconde una piccola insidia. Consideriamo il seguente snippet di codice: Image myImage = Image.FromFile("filename.jpg") Ciò che accade dietro le quinte è che nel field internal IntPtr nativeImage viene memorizzato un handler al file filename.jpg, che rimane aperto finché non si richiama il metodo Dispose() di myImage. Il problema è che, ovviamente, il file risulta bloccato e il sistema ha una risorsa impegnata; inoltre, se dimentichiamo di effettuare la Dispose, questa situazione perdura fino a che non viene effettuato un GarbageCollecting o, al peggio, fino alla chiusura dell'applicazione. Come ovviare? Personalmente, quando devo caricare un'immagine da file, faccio così: Image myImage;using (Image img = Image.FromFile("filename.jpg"){    myImage = new Bitmap(img);} Il costruttore...

posted @ mercoledì 9 agosto 2006 14:25 | Feedback (2) | Filed Under [ .Net 2.0 Windows Forms ]

Problemi con BindingSource a design time

Oggi ho avuto una brutta sorpresa: lavorando con VS2005 ad un progetto WinForms, mi sono trovato nell'assoluta impossibilità di impostare il DataBinding da designer: ogni volta che provavo ad impostare la proprietà DataSource di un qualsiasi BindingSource, VS2005 sollevava una NullReferenceException, mostrava una bella message box con su scritto "Reference not set to an instance of an object" e buonanotte al secchio. Pistolando un po' qua e là, alla fine sono riuscito a venirne a capo: si tratta di un problema che si verifica quando si cambia il naming delle classi, quando cioé i file Xml contraddistinti dall'estensione .datasource non sono...

posted @ domenica 6 agosto 2006 16:29 | Feedback (0) | Filed Under [ Visual Studio Windows Forms ]

A scuola di Drag'n Drop

Un semplice esempio di come implementare il Drag'n Drop nelle nostre Windows Forms C.p.l.

posted @ sabato 5 agosto 2006 15:09 | Feedback (2) | Filed Under [ .Net 2.0 Windows Forms ]

Wow, mi hanno moderato l'articolone su CodeProject!

Oggi mi è arrivata una mail che mi annunciava che l'articolo sulle Crad's Actions che ho pubblicato su CodeProject è stato moderato e non è più una unedited reader contribution. Questa sì che è una soddisfazione, considerando che è lì da meno di un mese e che molti articoli attendono il lavoro dell'editor da parecchio tempo in più! L'unico rammarico è che, d'ora in poi, non posso più modificarne il testo a piacimento, dato che ciò che invierò dovrà essere validato prima di andare online; peccato, perché proprio in questo weekend avrei voluto rilasciare un aggiornamento per correggere un paio di...

posted @ venerdì 12 maggio 2006 01:56 | Feedback (1) | Filed Under [ .Net 2.0 Misc Windows Forms ]

E le Actions se ne vanno su CodeProject

Nei giorni scorsi ho ricevuto un feedback da un ceco (nel senso che abita in Repubblica Ceca ) che aveva scovato la mia piccola libreria per puro caso, dicendo che secondo lui avrei dovuto metterla in un posto che le garantisse una maggiore visibiltà. Io e il mio inglese maccheronico ci siam messi al lavoro e ho partorito un articoletto per CodeProject. Che dire, ricevere i primi rating positivi è una soddisfazione grandissima! Ora spero anche in qualche feedback in modo da poter evolvere il lavoro sin qui svolto. powered by IMHO 1.3

posted @ lunedì 24 aprile 2006 10:11 | Feedback (1) | Filed Under [ .Net 2.0 Visual Studio Windows Forms ]

Attenti alla proprietà DesignMode

Chi sviluppa componenti con supporto al designer di VisualStudio, sicuramente si è trovato ad utilizzare la proprietà DesignMode per verificare se il codice sia in esecuzione nel contesto del designer o a runtime. Bene, avevo un problema che mi ha portato ad indagare su come funzioni internamente questa proprietà. Reflector alla mano ho scoperto che, in un Component... protected bool DesignMode{    get    {        ISite site1 = this.site;        if (site1 != null)            return site1.DesignMode;                return false;    }} Ora... premesso che, se utilizziamo VisualStudio, a design time il field site è un'istanza di System.ComponentModel.Design.DesignerHost.Site e che quel site1.DesignMode ritorna sempre true, c'è da fare un'importante considerazione: durante l'esecuzione del costruttore del Component, DesignMode è SEMPRE false, perché il corrispondente Site non è...

posted @ domenica 23 aprile 2006 11:48 | Feedback (0) | Filed Under [ .Net 2.0 Visual Studio Windows Forms ]

SetCompatibleTextRenderingDefault: cusa l'è?

Sicuramente tutti voi avrete notato che, nel template utilizzato da VS2005 per il metodo main dei nostri progetti windows forms, c'è una riga che recita Application.SetCompatibleTextRenderingDefault(false); Di cosa si tratta? L'ho scoperto ieri sera, cercando di utilizzare anche in C# la classe WindowsFormsApplicationBase: è una nuova feature delle classi che ereditano da Control del Fx 2.0 e consiste nella capacità di utilizzare GDI piuttosto che GDI+ per il rendering del testo. Come mai? Beh, GDI+ ha la peculiarità di avere API estremamente semplici da utilizzare, ma il buon vecchio GDI offre parecchi vantaggi, per esempio: Il look dell'applicazione è più consistente con le varie...

posted @ mercoledì 19 aprile 2006 14:19 | Feedback (1) | Filed Under [ .Net 2.0 Visual Studio Windows Forms ]

Rilasciata la versione 1.1 delle Crad's Actions

La piccola libreria open-source che sto realizzando si è appena evoluta: grazie al tempo libero che ho avuto durante queste vacanze, sono riuscito (in ritardo rispetto a quanto avevo previsto, purtroppo) a rilasciare la versione 1.1 delle Crad's Actions. Le novità rispetto alla release precedente sono parecchie: intanto un sensibile refactoring del codice (come?!?! così presto?!? ), che ora è sensibilmente più ordinato e comprensibile, poi l'aggiunta di nuove proprietà (quali shortcut keys, tooltip, ecc.ecc...), infine la creazione di un corposo numero di Standard Actions (es. Cut/Copy/Paste e parecchie altre), numero che è destinato ad aumentare nei prossimi giorni Per dimostrare il...

posted @ martedì 18 aprile 2006 02:02 | Feedback (0) | Filed Under [ .Net 2.0 Visual Studio Windows Forms ]

Come far sapere ad un Component chi lo ospita?

Il titolo non sarà la massima espressione di linguaggio tecnico, però è un problema che mi sono trovato ad affrontare nel weekend sviluppando le mie Actions Ora, chi le ha scaricate e magari ha avuto modo di guardarne i sorgenti, sa che si tratta di oggetti che ereditano da Component e che vanno sistemati su una Windows Form. Mi sono trovato nella necessità di avere, nella mia ActionList, un riferimento alla Form su cui essa giace....

posted @ lunedì 10 aprile 2006 00:54 | Feedback (2) | Filed Under [ .Net 2.0 Visual Studio Windows Forms ]

Ancora sulle actions: come utilizzarle?

Dato che mi è stato chiesto da qualcuno in mail, ho pubblicato un breve tutorial (in inglese, spero non troppo maccheronico ) su come utilizzare le Actions per .NET 2.0. Per leggerlo basta un click qui! powered by IMHO 1.3

posted @ giovedì 6 aprile 2006 16:54 | Feedback (0) | Filed Under [ .Net 2.0 Visual Studio Windows Forms ]

Et voilà! Le actions di Delphi su .NET 2.0!

Chi ha lavorato in Delphi sa quanto siano comode le actions! Di cosa si tratta? Allora... Una form, solitamente, permette di compiere la stessa azione tramite più elementi visuali; pensate ad esempio alla funzione "Grassetto" in un ipotetico editor RTF: magari possiamo attivarla tramite menu, oppure potremmo utilizzare una comoda toolbar, o ancora potremmo accedervi tramite un bel context menu. Tutti questi elementi condividono parecchie proprietà: innanzitutto devono tutti rispondere al click del mouse allo stesso modo, e questo si può già fare in .NET assegnando lo stesso event handler a tutti gli oggetti per i rispettivi eventi click. Purtoppo ciò...

posted @ mercoledì 5 aprile 2006 02:32 | Feedback (5) | Filed Under [ .Net 2.0 Visual Studio Crad's Actions Windows Forms ]

Powered by:
Powered By Subtext Powered By ASP.NET