Windows Forms
			
				
				
				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...
				
				
			 
	
			
				
				
				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...
				
				
			 
	
			
				
				
				
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
				
				
			 
	
			
				
				
				
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...
				
				
			 
	
			
				
				
				
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...
				
				
			 
	
			
				
				
				Un semplice esempio di come implementare il Drag'n Drop nelle nostre Windows Forms
C.p.l.
				
				
			 
	
			
				
				
				
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...
				
				
			 
	
			
				
				
				
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
				
				
			 
	
			
				
				
				
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 
è...
				
				
			 
	
			
				
				
				
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...
				
				
			 
	
Full Windows Forms Archive