aprile 2004 Blog Posts

Whidbey Watcher #19: BackgroundWorkerThread

Eseguire metodi in threads secondari è ormai un pratica "comune" per chi sviluppa applicazioni Window Forms.A parte i soliti 'problemi' di sincronizzazione tipici delle applicazioni multithread la parte più 'ostica' è l'accesso ai controlli Windows Forms in maniera thread safe, operazione che ci costringe ad utilizzare Delegates,Invoke, InvokeRequired...Per renderci la vita più "facile" in Whidbey è stato aggiunto un controllo BackGroundWorkerThread il quale ha un metodo RunWorkerAsync che invocato prova la generazione (in un thread secondario) di un evento DoWork (al quale, volendo, possiamo anche passare dei parametri).All'interno di DoWork() è possibile invocare il metodo ReportProcess che a sua volta...

posted @ venerdì 30 aprile 2004 22:23 | Feedback (6)

Whidbey Watcher #18:MenuStrip, ToolStrip e StatusStrip

La CTP ha dei controlli molto interessanti rispetto alla versione distribuita a PDC, sopratutto perchè finalmente per avere un applicazione con look & feel alla Office 2003 non è più necessario appoggiarsi a controlli di terze parti.I controlli che permettono la 'magia' sono MenuStrip,ToolStrip,StatusStrip e ContextMenuStrip. 5 minuti di "paura" (i crash sono frequentissimi...) e il risultato è visibile sopra (notate anche il controllo MaskedTextbox...(!) )Le opzioni di configurazione non mancano (vedi sotto) e la flessibilità di gestione dei vari items va ben oltre quella offerte nei controlli di terze parti.Ci sono voluti parecchi anni ma direi che il team dei...

posted @ giovedì 29 aprile 2004 00:29 | Feedback (7)

Whidbey Watcher #17: Buttons and Flash

La form in figura è composta da 2 pulsanti che sfruttano le nuove proprietà di Whidbey BorderColor e BorderSize.I pulsanti hanno inoltre una proprietà MouseOverBackColor che permette di far cambiare il colore del pulsante quando si passa sopra con il mouse.Il tutto vale se la proprietà FlatStyle del pulsante è impostata a Flat.Un dettaglio sulla classe Form: Adesso espone un metodo Flash() che permette di far lampeggiare sia la finestra che la toolbar a nostro comando (in pratica un wrapper della API FlashWindow)

posted @ domenica 25 aprile 2004 23:36 | Feedback (1)

Whidbey Watcher #16: Controllo WebBrowser

Finalmente per avere un webbrowser all'interno delle nostre applicazioni windows forms non è più necessario importare la shdocvw.dll, in Whidbey abbiamo il componente WebBrowser che wrappa la dll citata e grazie al quale creare un minibrowser è questione di pochi minuti.Tra le funzionalità interessanti: GoBack(), GoForward(),GoHome(),Navigate() e gli eventi DocumentCompleted(), ProgressChangedEvent(),FileDownLoad().Una volta che la pagina è stata scaricata è possibile scorrere l'intero documento HTML attraverso la proprietà Document.L'esempio sotto riportato l'ho scritto in circa 3 minuti (...e si vede) usando i nuovi controlli ToolStrip e StatusStrip di cui parlerò in un altro blog...  

posted @ domenica 25 aprile 2004 22:54 | Feedback (3)

Whidbey Watcher #15: Listview e Treeview improvements

Anche i controlli Listview e Treeview sono stati 'ribaltati' a dovere... :-)Entrambi espongono la proprietà BackgroundImage, la Listview offre ora la possibilità di inserire icone nei ColumnHeaders.Sia Listview che Treeview offrono ora la modalità OwnerDraw: La listview espone due eventi DrawItem e DrawSubItem, il treeview permette di decidere se gestire tutto (OwnerDrawAll) o il solo testo (OwnerDrawText)La listview oltre che essere virtualizzabile (Virtualmode=True) ha un interessante modalità ShowGroup che permette di raggruppare gli items a nostro piacere (vedi foto) e, finalmente, permette di associare un proprio tooltip ad ogni singolo listviewitem.Anche il treeview permette di avere un tooltip per ogni nodo...

posted @ domenica 25 aprile 2004 12:08 | Feedback (0)

Whidbey Watcher #14: Picturebox improvements...

Il controllo picturebox di Whidbey ha una feature interessante: La possibilità di caricare immagini in maniera Sincrona/Asincrona (Usando WaitForLoad) non solo da locare ma anche da URL. Quindi si può usare ImageLocation=http://www.miosito.com/mypic.jpgSi può specificare l'immagine da usare in caso di errore nel download (ErrorImage) come pure l'immagine da visualizzare durante il caricamento (InitialImage)

posted @ giovedì 22 aprile 2004 15:28 | Feedback (0)

Attenzione a questi metodi...

Brad Abrams segnala una serie di funzioni del CLR 1.0/1.1 che verranno marcate come obsolete nella versione 2.0, questo significa che saranno ancora presenti ma l'uso verrà sconsigliato, se state pensando di usarne qualcuno forse è il caso di cambiare idea...  

posted @ giovedì 22 aprile 2004 15:26 | Feedback (0)

Whidbey Watcher #13: Autocomplete

I controlli Textbox e Combobox di Whidbey espongono la feature di autocompletamento. E' possibile decidere sia la modalità di autocomplete (Suggest,Append, SuggestAppend) e l'origine dei dati per la ricerca (FileSystem,AllUri,CustomSource...) se impostate CustomSource la ricerca avverrà all'interno di una lista descritta dalla proprietà AutoCompleteSource.Per la combobox esiste anche la possibilità di cercare all'interno della lista degli items disponibili (AutoCompleteSource=ListItems) peccato che nella CTP non funzioni... :-(

posted @ giovedì 22 aprile 2004 12:27 | Feedback (0)

PInvoke.net

Per tutti i PInvokers un sito interessante creato da Adam Nathan dedicato a Pinvoke, essendo un Wiki ognuno puo' contribuire con le proprie APIs preferite.

posted @ martedì 20 aprile 2004 14:54 | Feedback (0)

Whidbey Watcher #12:Controls.Item(...)

Per i nostalgici dei controls arrays un gradito ritorno, la collezione Controls espone:Controls.Items("ControlName")Esempio:Volete recuperare le 3 Textbox (TextBox1,TextBox2,TextBox3) presenti nel vostro form? ecco il codice For i As Int32 = 1 To 3  Dim txt As TextBox = TryCast(Controls.Item("TextBox" + i.ToString()), TextBox)  If (txt IsNot Nothing) Then txt.Text = "Hello" + i.ToString()NextGiusto per provare, ho utilizzato TryCast (l'equivalente di 'as' di C#...) e l' "utilissimo" IsNot (come abbiamo potuto farne a meno fin'ora?...)La novità interessante è che anche VB supporta la gestione degli eventi da designer come C# quindi mappare eventi comuni sulla stessa procedura è ora molto più semplice.Anche la gestione...

posted @ martedì 20 aprile 2004 00:11 | Feedback (0)

Whidbey Watcher #11: Edit and Continue al 50%

Avevo già sentito questo 'rumor' ma ora c'è la conferma ufficiale: VB avrà Edit & Continue solo per le applicazioni Windows Forms, nulla cambia per chi sviluppa ASP.NET :-(.I motivi li trovate in questo blog

posted @ lunedì 19 aprile 2004 22:00 | Feedback (0)

Whidbey Watcher #11: Global Namespace

Qualcuno mi impedisce di chiamare un namespace System?, No, e allora posso tranquillamente scrivere questo: namespace Test{  namespace System  {     public class MyOwnClass     {       public void MyMethd()       {        System.Diagnostics.Debug.WriteLine("Hello");       }    }  }}Peccato che il codice non compila in quanto il compilatore utilizza il mio namespace System che, ovviamente, non include il namespace Diagnostics.C#2.0 include la keyword global per indicare che la ricerca di un determinato namespace deve partire dalla root.Quindi possiamo modificare la riga incriminata con:global::System.Diagnostics.Debug.WriteLine("Hello");A dire il vero, la documentazione citava solo "::" ma la CTP funziona in questo modo...E per VB?... lo stesso! Namespace Test  Namespace System     Public Class MyOwnClass       Public Sub DoSomething()        ...

posted @ domenica 18 aprile 2004 20:38 | Feedback (0)

Whidbey Watcher #10: ParametrizedThreadStart

Quando si a a che fare con System.Threading.Thread la domanda ricorrente è: "Come faccio a passare dei parametri alla funzione invocata dal Thread?", la risposta è nota, però val la pena notare che nel framework 2.0 oltre al solito delegate ThreadStart è apparso un ParametrizedThreadStart che permette di passare al thread i parametri che ci servono. Int32[] values ={ 3, 4, 8 };ParameterizedThreadStart ps = new ParameterizedThreadStart(ts);Thread t = new Thread(ps);t.Start(values); private void ts(object o){ Int32[] values = (Int32[])o; foreach(Int32 i in values) {   System.Diagnostics.Debug.WriteLine(i.ToString()); }}  

posted @ domenica 18 aprile 2004 15:37 | Feedback (1)

Evitare costruttori statici

Brad Abrams nel suo blog segnala come sia preferibile 'evitare' l'uso di costruttori statici nelle classi, in pratica in presenza di un costruttore statico, ogni volta che accediamo ad un membro della classe il CLR deve verificare se il membro e' stato inizializzato e, in caso contrario, invocarlo..  

posted @ domenica 18 aprile 2004 14:46 | Feedback (1)

Tour negli uffici del Longhorn Development Center

Su Channel9 Chris Sells ha pubblicato un interessante video girato negli uffici Microsoft, se volete vedere "dove" nascono i prodotti che usiamo quotidianamente dategli un occhiata.Decisamente un ambiente rilassante, che sia per questo che le date continuano a shiftare? :-)  

posted @ sabato 17 aprile 2004 02:58 | Feedback (0)

VB.NET FAQ

Dopo le FAQ di C#, non potevano mancare le FAQ di VB.NET...

posted @ venerdì 16 aprile 2004 15:52 | Feedback (4)

Raffaele il consigliere

Come è possibile leggere dalla news di oggi, Raffaele è un nuovo consigliere nella board di UGIDotNET, beh, con tutti i consigli che da quotidianamente...Welcome Raf!

posted @ venerdì 16 aprile 2004 10:21 | Feedback (0)

Tab vs Enter in una Textbox

Il blog nasce da una domanda nel NG di VB.NET."Vorrei fare in modo che l'utente non debba premere Tab ma Enter per passare al campo successivo in una Textbox winform"Visto che la domanda ricorre frequentemente, val la pena di bloggarla.Aggiungete al vostro progetto uno Usercontrol, sostituite:Inherits System.Windows.Forms.ControlconInherits System.Windows.Forms.Textboxe poi aggiungete queste righe: Protected Overrides Function ProcessDialogKey(ByVal keyData As System.Windows.Forms.Keys) As Boolean  If (keyData = Keys.Enter) Then   Return MyBase.ProcessDialogKey(Keys.Tab)  ElseIf (keyData = Keys.Tab) Then   Return True  Else   Return MyBase.ProcessDialogKey(keyData)  End If End Function Fatto questo, fate il build della solution e impostate un reference al vostro stesso exe (!) e utilizzate lo usercontrol che apparira nella Tab "My User Controls"Enjoy! ;-) Per la...

posted @ giovedì 15 aprile 2004 23:13 | Feedback (4)

Whidbey Watcher #9: Item Renaming

In Whidbey ci sono alcune piccole features che renderanno felici gli sviluppatori .NET:-Aggiungete una textbox (textbox1) ad un form-Nell'evento Load scrivete textbox1.Text="Hello" (col ; se usate C# :-) )-Nella finestra delle proprietà rinominate textbox1 in txtNameMagicamente il codice si è trasformato in txtName.Text="Hello" :-)Lo stesso vale se modificate la proprietà Name o il nome del file .vb (o .cs) di un form.Come senz'altro saprete, Refactoring è una delle principali novità di C# ed effettivamente l'implementazione in Whidbey è notevole, alcune 'tracce' sono comunque presenti anche in VB.NET, infatti selezionando una property o un method e facendo right-click, nelle varie voci del popup menu...

posted @ giovedì 15 aprile 2004 00:58 | Feedback (1)

Workshop "Distributed"

Se avete a che fare con applicazioni distribuite e non avete partecipato al workshop UGIdotNET di oggi, beh..., avete perso una grande occasione.Andrea, Pierre e Raf hanno parlato di Webservice, Remoting e Indigo e, a quanto pare, la sessione finale di Q&A e' stata molto 'intensa'.Un impegno improvviso mi ha impedito di salutare qualche amico..., sorry, sara' per il prossimo workshop! :-)

posted @ mercoledì 14 aprile 2004 23:46 | Feedback (0)

Dite la vostra su Visual Studio 2005

Volete dare il vostro feedback su Visual Studio 2005 e il framework 2.0? fatelo usando questo sito

posted @ sabato 10 aprile 2004 13:54 | Feedback (0)

Nuove teconologie...

In esclusiva, la PM del .NET compact framework! :-)

posted @ mercoledì 7 aprile 2004 18:21 | Feedback (0)

Immagini da Seattle

Oggi giornata 'rilassante' dove abbiamo avuto modo di incontrare altri MVP provienienti da tutte le parti del mondo.Qui sotto trovate Robert Scoble (ex MVP e ora dipendente Microsoft) Indovinate un pò di cosa si occupa? E sotto due 'volti noti' che fanno gli 'Italiani' con Marcie Robillard (a.k.a. Datagrid girl)

posted @ lunedì 5 aprile 2004 07:58 | Feedback (1)

MVP Summit 2004

Come alcuni di voi sanno in questi giorni sono a Seattle per l'MVP Summit 2004 insieme ad altri MVP e tra questi Raffaele e Andrea. Ecco quello che è appeso ai muri di Seattle...

posted @ domenica 4 aprile 2004 09:22 | Feedback (3)