Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

LINQ: enumerare i controlli di un form (VB 2008)

Oggi vediamo come sia possibile, tramite una query LINQ, enumerare i controlli contenuti in un oggetto System.Windows.Forms.Form. Supponendo di avere sulla nostra finestra diversi tipi di controlli, il seguente snippet ottiene tutte le TextBox, selezionando, per ciascuna di esse, il valore della proprietà Name:

        Dim query = From controllo In Me.Controls _

                    Where TypeOf (controllo) Is TextBox _

                    Let txtBox = DirectCast(controllo, TextBox) _

                    Select txtBox.Name

L'operatore DirectCast ci occorre perchè noi vogliamo conoscere le informazioni delle TextBox, quindi dobbiamo convertire ciascun Control in questo particolare oggetto; in questo caso forse si apprezza meglio l'utilità della keyword Let, che ci permette di eseguire operazioni sull'oggetto interrogato non altrimenti realizzabili.

Poi basta una semplice iterazione per conoscere il valore della proprietà Name di ciascuna TextBox:

        For Each item In query

            Console.WriteLine("TextBox name: {0}", item)

        Next

Ovviamente, nel caso di applicazioni Windows Forms l'utilizzo della Console invia tutto alla finestra di output di Visual Studio 2008.

Alessandro

Print | posted on venerdì 11 luglio 2008 16:31 | Filed Under [ Visual Basic LINQ ]

Powered by:
Powered By Subtext Powered By ASP.NET