back to top

Sviluppare applicazioni con VB.Net

Da anni si sente molto parlare di .Net (si legge dot net). Il fulcro di questa tecnologia sta proprio nel raggiungimento di un obiettivo: l’integrazione dei servizi Web programmati con diverse piattaforme,e distribuibili con la tecnologia in argomento, attraverso i Web services.

Ovvio che in un corso più avanzato di .Net per Visual Basic si potrà trattare in maniera più ampia dei Web Services. In questo paragrafo ho voluto evidenziare l’esistenza dei Web services raggiungibili da qualsiasi applicazione desktop (ossia Windows) oppure dal Web. L’obiettivo di questa guida è introdurre un argomento, suddiviso in 13 capitoli, la programmazione in Visual Basic.Net. Un programma .Net si poggia su un Framework. Per poter eseguire applicazioni codificate con questa tecnologia si rende necessario avere sul computer di sviluppo:

  • l’SDK (Software development Kit) di .Net – espone diversi compilatori, attraverso i quali è possibile avere come risultato, ad esempio, l’eseguibile, la Dll, a seconda che si stia creando applicazioni Windows oppure librerie di classi
  • il componente .Net Framework Redistribuitable Package, il quale, installato su qualsiasi macchina, ci permette di eseguire ogni tipologia di applicazione .Net client side o server side

Sul computer, dove verrà eseguita l’applicazione, basta soltanto l’ultimo componente. L’architettura del framework consta di numerosi namespace, ciascuno dei quali contiene una serie di classi suddivise per categorie, alcune delle quali possono essere:

  • System
  • System.Web
  • System.Windows.Form
  • System.Data
  • e altre documentate nella guida in linea della MSDN Library.

In definitiva il Framework .Net consta:

  • dello strato posto di un gradino più alto del sistema Operativo, denominato CLR (Common Language Runtime)
  • la libreria di classi .Net Framework

Sintetizziamo la principali funzione del componente CLR (Common Language Runtime):gestione della memoria, gestione dei processi (o thread), gestione del codice. Invece l’altro componente viene sintetizzato come l’insieme nutrito di classi riutilizzabili, attraverso le quali l’ambiente di sviluppo poi genera il codice. che serve per la creazione delle diverse tipologie di applicazioni (desktop, console, web service, Asp.net site). Si parla di codice gestito quando nella programmazione si utilizzano direttamente le classi del .Net Framework e per le quali si possono gestire tutte le eccezioni. Mentre se in un progetto dovessimo aggiungere riferimenti a componenti di terze parti, in quel caso poi parliamo di codice non gestito. Concludiamo questo paragrafo, rispondendo a questa domanda: quali sono le varie tipologie di applicazioni, basandosi sulle librerie di classi del .Net Framework?

  • applicazioni console
  • applicazioni con interfaccia grafica utente (o applicazioni Windows)
  • applicazioni web con ASP.Net
  • Web services
  • servizi Windows

Differenze sintattiche tra VB.Net e VB6

Visual Basic .Net risulta essere il successore del linguaggio di programmazione più popolare e utilizzato in tutte le aziende, per la sua facilità di apprendimento e per il fatto che deriva dal Basic nostalgico degli anni ’80. Naturalmente qualora si facesse l’operazione di upgrade di un’applicazione da Visual Basic 6 alla versione successiva (Visual Basic .Net), occorrerà tener presente le seguenti differenze sintattiche:

  • per i tipi di dati, dei quali parleremo nei dettagli successivamente, c’è una novità: da Variant a Object, da Integer a Short
  • in modalità di progettazione (ad esempio per lo sviluppo di Windows Form), offrendo maggiore potenza e flessibilità, tutti i controlli e altri componenti vari sono classi della Framework Class Library.
  • Esempio: nella fattispecie l’ambiente di sviluppo autogenera in automatico il codice per istanziare all’avvio del form il campo di testo; e per seconda cosa anche il codice al fine di descrivere le impostazioni delle proprietà del controllo trascinato.
  • quando si dichiara una variabile, rispetto al vecchio VB6, risulta essere, come i controlli, un’istanza al tipo di dato del Framework .Net

Rispetto all’ultima differenza dichiarando una variabile di tipo stringa, la variabile stessa diventa oggetto e come tale ha una serie di proprietà ed metodi. Uno dei metodi, ad esempio, può essere quello che permette di restituire la lunghezza dei caratteri utilizzati. Altre differenze possono essere:

  • rispetto al vecchio VB6, non si dichiara più un tipo di dati definito dall’utente con il costrutto Type…End Type. Si utilizza il costrutto Structure…End Structure. Con quest’ultimo costrutto sarà possibile dichiarare anche metodi e proprietà, tipo come si faceva con la creazione delle classi in VB6
  • Le subroutine e le function sono rappresentate attraverso:
    Module Miomodulo
    Sub Primopgramma()
       ....
       ....
       ....
    End Sub
    function miafunzione()
       ...
       ...
       ...
    End function
    End Module

Lo anticipiamo, ma sarà ugualmente approfondito, che in detta modalità di scritturazione del codice, creiamo le cc.dd. Console Application. Anche l’inizializzazione degli oggetti o controlli avviene in modo diverso: nel vecchio VB6 si dichiarava via codice:

...
set oggetto=.....
....
'In VB.Net
....
oggetto=new .....
....

In definitiva in VB.Net non si utilizza più la parola riservata Set. Ricordandoci che in VB6, nel momento che dichiaravamo e tipizzavamo una variabile, scrivevamo:

Dim cognome as String
...
'Non potevamo scrivere
Dim cognome as string="Spalluzzi"
...

in Visual Basic .Net, invece, la dichiarazione, e contestualmente anche l’assegnazione di un valore a quella variabile, sono operazioni possibili. Concludiamo questo paragrafo riprendendo il concetto esposto nel capitolo precedente: alla base di tutto c’è il Framework .Net, il quale espone diversi compilatori, attraverso i quali ottenere un’applicazione eseguibile, una libreria a collegamento dinamico. La cosa che ci dovrebbe meravigliare nel passare a Visual Basic .Net, dovrà essere il fatto che possiamo compilare pezzi di codice scritti in linguaggi differenti (VB.Net, C#, J#) e non causare problemi alcuni allo sviluppatore. In un corso medio-avanzato su Visual Basic.Net potrà essere possibile ampliare queste considerazioni tecniche.

Variabili, costanti, e tipi di dati in VB.Net

Ogni linguaggio di programmazione, per il quale ci si appresta ad iniziare un’attività di studio, non si può non partire dai seguenti concetti basilari:

  • concetto di variabile
  • concetto di costante
  • concetto di tipo di dato

Una variabile rappresenta un’area di memoria, dove viene memorizzato qualsiasi valore acquisito dall’utente per mezzo della tastiera. Potremmo memorizzare anche un valore frutto di un processo di elaborazione dati, per poterlo riutilizzare in qualsiasi parte del programma. Una costante, a differenza di una variabile, assumerà sempre lo stesso valore. Esempio: nel caso in cui volessimo calcolare l’area di un cerchio, potremmo dichiarare come costante quel numero chiamato pi grego, il quale è valorizzato sempre a 3,14. Le costanti una volta dichiarate, a differenza delle variabili, non sono suscettibili di operazioni di assegnazione. Le parole chiavi, per dichiarare rispettivamente variabili e costanti, sono:

  • Dim
  • Const
Const pigrego=3,14
....
'Non si potrà mai modificare il valore con questa espressione
pigrego=pigrego*6
'tale espressione genererà errore
...

nella dichiarazione delle variabili o costanti si procederà ad assegnare:

  • un nome alla variabile o costante che non sia una parola riservata del linguaggio
  • un tipo i dato
  • , il quale permetterà al sistema di conoscere a priori se la variabile o la costante memorizza una stringa, un numero, ecc…

Non è obbligatorio tipizzare le variabili o le costanti, ma c’è da fare una piccola osservazione:

  • rispetto al vecchio VB6, dichiarando una variabile o costante, ma non tipizzandola, significava che quella variabile e/o costante fosse di tipo Variant
  • in Visual Basic.Net, invece, le variabili e/o costanti dichiarate, ma non tipizzate, diventano Object

ecco che riprendendo le differenze sintattiche tra i due linguaggi di programmazione, si capisce bene adesso che significa che il tipo Variant è stato sostituito da Object. Riassumiamo in questa tabella i principali tipi di dati elementari di Visual Basic.Net:

Tipi di dati Descrizione Dati rappresentati
Boolean Memorizziamo valori dell’Algebra di Boole True o False
Short E’ il vecchio integer di Visual Basic 6.0 e rappresenta i numeri interi compresi tra -32768 e 32767. Quindi si dichiara Dim numerontero as Short La rappresentazione dei numeri a 16 bit in Visual Basic 6.0 avveniva con l’uso di Integer, mentre con Visual Basic.Net avviene con il tipo di dato Short
Decimal Nelle variabili dichiarate di tipo Decimali memorizzeremo appunto valori decimali Un valore di tipo decimal occuperà in memoria 16 byte
Double Memorizzeremo valori a virgola mobile a precisione doppia Un valore di tipo Double occuperà in memoria ,con tale rappresentazione, 8 byte
Integer Il nuovo Integer in Visual Basic .Net rappresenterà numeri a 32 bit Il tipo integer di Visual Basic .Net è il vecchio Long di Visual Basic 6.0. Occuperà in memoria 4 Byte
Long Il nuovo tipo di dato Long in Visual Basic .Net supporta adesso la rappresentazione dei numeri a 64 bit Un valore con una simile rappresentazione occuperà in memoria 8 byte
Single Tipizzando le variabili con Single memorizzeremo informazioni numeriche con virgola mobile a precisione singola Un valore a virgola mobile a precisione singola occuperà in memoria 4 byte
Object Il tipo di dati Object, come già è stato accennato nei capitoli precedenti, sostituisce il tipo Variant. In Visual Basic.Net non tipizzando una variabile e/o costante, quella variabile non sarà più di tipo Variant, come in Visual Basic 6, ma di tipo Object Una variabile dichiarata in questo modo potrà memorizzare qualunque tipo di informazioni (c.d. tipo di dati universale) ed occuperà in memoria 4 oppure 8 byte, a seconda della piattaforma dove sta girando l’applicazione (piattaforma a 32 oppure a 64 bit)
Date In variabili di tipo Date memorizzeremo informazioni temporali, ossia date e ore Il contenuto di variabili e/o costanti di tipo Date occuperanno 8 byte. Saranno rappresentate tutte le date partendo dalle ore 0.00.00 (mezzanotte) del 1° gennaio 0001 alle 23.59.59 del 31 Dicembre 9999
String Nella dichiarazione di variabili di tipo Stringa memorizzeremo appunto un insieme di caratteri alfanumerici (ossia numeri e lettere). Visual Basic.Net, a differenza del linguaggio di programmazione VB6 gestisce con tale tipo di dato stringhe a lunghezza variabile. Una variabile tipizzata come stringa a lunghezza variabile occupa in memoria da 0 a circa 2 Miliardi di caratteri
Byte Con variabili di tipo Byte memorizzeremo da 0 a 255 (senza segno) Occuperà in memoria 1 Byte
Char Con variabili di tipo char memorizzeremo stringhe anche in questo caso. Soltanto però che l’intervallo va da 0 a 65535 caratteri Il contenuto di una variabile tipizzata in questo modo occupa in memoria 2 byte

I tipi di dati del Framework .Net

All’interno della MSDN Library viene riprodotta una tabella, all’interno della quale viene evidenziato il raccordo di quelli che sono i tipi di dati commentati nel paragrafo precedente e quelli che risultano essere i tipi di dati del Framework .Net. Presentiamo al tal proposito la seguente tabella:

Tipi di dati VB.Net Tipi di dati del .Net Framework
Boolean Boolean
Short Int16
Decimal Decimal
Double Double
Integer Int32
Long Int64
Single Single
Object Object(classe)
Date DateTime
String String(classe)
Byte Byte
Char Char

A proposito del tipo dato String dobbiamo fare la seguente considerazione: in Visual Basic .Net quando si dichiara una variabile e/o costante, quella variabile e/o costante può contenere stringhe a lunghezza variabile. Ciò significa che le stringhe a lunghezza fissa non sono più supportate. L’istruzione che permetteva in VB6 la dichiarazione di stringhe a lunghezza fissa genera errori:

Dim cognome as String*30
'genererà errore all'interno dell'ambiente di sviluppo

A proposito sempre dei tipi di dati, il costrutto Type…End Type non è più supportato nel linguaggio VB.NET. E’ stato sostituito dal costrutto Structure…End Structure. Questo costrutto permette di definire un tipo di dato da parte dell’utente. Un tipo di dato strutturato. Ecco un esempio di dichiarazione di un tipo di dato definito dall’utente:

....
Structure archivio
Public cognome As String
Public nome As String
Public credito As Decimal 
End Structure

Come in Visual Basic 6.0, quando viene definito un tipo di dato da parte dell’utente, in memoria Ram non avremo nessun riferimento al fine di poterlo utilizzare. Ciò che manca è la dichiarazione con la parola chiave Dim.

...
Dim mioarchivio as archivio
archivio=new archivio
....

Con la notazione

archivio.cognome="Rossi"
archivio.nome="Marco"
archivio.credito=120.56

assegneremo dei valori alle rispettive proprietà del tipo di dato personalizzato.

Libreria di compatibilità con VB6: Microsoft.VisualBasic

In questo capitolo della guida, brevemente vi racconterò del mio disorientamento, passando da VB6 A VB.Net. Il contesto di quello che vi sto raccontando è ambientato nell’utilizzo di una versione beta del Framework .Net. Quando si provava a scrivere la funzione conosciuta MsgBox, il compilatore la segnava di rosso. L’errore segnalato era di funzione non riconosciuta. Si trattava di una delle prime versioni beta prima che uscisse sul mercato Microsoft Visual Basic .Net 2003. Per risolvere questo bug bisognava aggiungere un riferimento proprio alla libreria in argomento, denominata libreria di compatibilità tra i due linguaggi. Adesso invece è tutto cambiato. Nel momento in cui si crea un nuovo progetto quella libreria viene aggiunta in modalità predefinita. Attualmente l’invocazione di funzioni tipo MsgBox, InputBox non vengono segnalate come errori, in quanto verranno riconosciute in modo automatico. Domanda: Quale funzione assolve questo namespace del Framework .Net Microsoft.VisualBasic?. Si risponde a questa domanda dicendo che contiene tutti i tipi che supportano la libreria di run-time di Visual Basic. Per un primo approccio a questa libreria raccogliamo in questa tabella i principali utilizzi che si possono fare di questa libreria:

Utilizzi di Microsoft.VisualBasic Descrizione
Gestione collection La libreria Microsoft.ViualBasic contiene all’interno del namespace una classe Collection. A sua volta la classe collection contiene una serie di metodi tipo per gestire l’aggiunta, la cancellazione, l’accesso ai vari elementi della collection stessa.
Gestione delle conversioni All’interno della classe Conversion esiste un set di funzioni che permettono, ad esempio di convertire, numeri in ottale, esadecimale, intero. Abbiamo la funzione str oppure la funzione val per convertire un numero in stringa e viceversa
Gestione DateTime La classe DateTime contiene un set di funzioni per gestire le informazioni di tipo temporale, ossia che misurano il tempo espresso sotto forma di date oppure di orari.
Gestione FileSystem Con questo modulo della libreria Microsoft.VisualBasic saranno gestite tutte le operazioni comuni che si possono fare sul filesystem:accesso ad una cartella conoscendo il percorso, creazione,cancellazione di cartelle, gestione di file con accesso sequenziale o casuale
Gestione Finanacial Questo modulo comprende un set di funzioni finanziarie. Gli esperti in matematica finanziaria possono trovare utilità in applicazioni per la gestione di rendite, determinazione di tassi, ecc…
Modulo Interaction della libreria Microsoft.VisualBasic In questo modulo sono comprese una serie di parole chiavi, utili per rendere un’applicazione interattiva: tipo l’accesso al registro delle chiavi di sistema, l’acquisizione di dati da parte dell’utente con la funzione InputBox, la visualizzazione di messaggi all’utente durante l’esecuzione dell’applicazione stessa. Stiamo parlando della funzione Msgbox. Accesso alle variabili d’ambiente del sistema operativo con la funzione ENVIRON. Esecuzione di programmi eseguibili con l’istruzione SHELL, operazione di creazione e restituzione di un riferimento ad un oggetto COM con la funzione CreateObject.
Gestione delle stringhe con il modulo Strings Comprende un set di funzioni, per mezzo delle quali si possono manipolare le stringhe: sarà possibile convertire una stringa in maiuscolo o in minuscolo (funzione Ucase, Lcase); formattazione delle stringhe in un certo modo con la funzione Format; conoscere data una stringa la lunghezza dei caratteri (funzione Len), ecc…

Nella lettura di questa guida, proprio per la gestione delle stringhe, date e funzioni particolari, approfondiremo lo studio sulla libreria Microsoft.VisualBasic.

Istruzioni condizionali in VB.Net

Le istruzioni condizionali sono particolari costrutti determinanti a controllare il flusso di un programma. – Nel prossimo capitolo approfondiremo il discorso sulle istruzioni di iterazione, le quali permettono di iterare appunto due o più righe di codice un numero determinato di volte, ma altre volte è imprecisata la condizione di iterazione. Le istruzioni condizionali sono anche dette strutture di controllo decisionali. L’istruzione If..Then..Else rappresenta un costrutto completo per implementare le istruzioni decisionali:

if <condizione> then
   Istruzione 1
   Istruzione 2
   ....
   Istruzione n
 else
  Istruzione 1
  Istruzione 2
  ....
  Istruzione n
End if

In un costrutto di questo genere si verifica dapprima:

  • la condizione se è vera o falsa
  • se è vera la condizione vengono eseguite le righe di codice dopo l’istruzione then
  • se è falsa vengono eseguite le righe dopo l’istruzione else

per formulare la condizione utilizzeremo gli operatori relazionali e logici. Nelle due tabelle seguenti rappresenteremo rispettivamente quelli che sono gli operatori relazionali e quelli che sono gli operatori logici.

Operatori Relazionali Descrizione
= Operatore per effettuare il test di ugualianza
<> Diverso
< Minore
<= Minore o uguale
> Maggiore
>= Maggiore o uguale

Gli operatori relazionali permettono di eseguire operazioni di confronto tra due o più espressioni. Se dovessimo combinare due o più espressioni, attraverso uno o più operatori relazionali, abbiamo anche gli operatori logici. Essi li riassumiamo in questa tabella:

Operatori Logici Descrizione
Not Negazione – Il risultato del test A>B se dovessere essere uguale a true; anteporre Not a quell’espressione significherebbe eseguire una negazione. Sarebbe come effettuare il test b>a
Or Disgiunzione logica – Abbiamo due espressioni da testare. Seguendo questa tabella di verità sapremo quando il risultato dell’applicazione della disgiunzione sarà Vero
A>B=VERO B>C=VERO A>B OR B>C=VEROA>B=FALSO B>C=VERO A>B OR B>C=VEROA>B=VERO B>C=FALSO A>B OR B>C=VEROA>B=FASLO B>C=FALSO A>B OR B>C=FALSO
And Congiunzione Logica – Abbiamo due espressioni da testare. Seguendo questa tabella di verità sapremo quando il risultato dell’applicazione della congiunzione logica sarà Vero
A>B=VERO B>C=VERO A>B AND B>C=VEROA>B=FALSO B>C=VERO A>B AND B>C=FALSOA>B=VERO B>C=FALSO A>B AND B>C=FALSOA>B=FALSO B>C=FALSO A>B AND B>C=FALSO

Istruzioni di iterazione con VB.Net

Anche le istruzioni di iterazione sono particolari istruzioni che controllano il flusso di un programma Applicando le istruzioni di iterazione all’interno delle nostre routine di codice, dovremmo specificare:

  • una variabile contatore iniziale per definire da quale valore iniziare a contare per arrivare al valore finale stabilito a priori o imprecisato
  • questo valore iniziale viene incrementato unitariamente; una volta fissato bene il valore finale o determinata la condizione di fine loop, si uscirà dalla struttura di iterazione e si continuerà il flusso del programma.

Nell’ipotesi conoscessimo il valore finale, ossia il numero di volte che dobbiamo ripetere le righe di codice, costituenti il corpo della struttura di iterazione, applicheremo il costrutto For…Next. La sintassi del ciclo For..Next:

for j=1 to 10 
  x=x+2
  next
.....

dopo la clausola to è stato dichiarato il numero di volte di iterazione della struttura stessa. Se la clausola Step viene omessa, significa che la variabile contatore iniziale verrà incrementata unitariamente, altrimenti del valore indicato dopo la clausola Step. La variabile contatore iniziale se maggiore di quella del valore finale, significa che dopo la clausola Step dovremmo indicar un numero per decrementare il valore della variabile contatore iniziale. Nella struttura di controllo For..Next potremmo anche uscire in maniera anticipata dal loop immettendo, tra le righe di codice, la direttiva Exit For. Altre varianti della struttura di iterazione sono:

  • Do while
  • Do unitl

La sintassi per rappresentare la struttura di iterazione con Do While è:

Do
 j=j+1
 x=x+2
while j<=10

abbiamo rappresentato lo stesso esempio di codice visto nella struttura For..Next. Dopo la parola chiave While viene formulata la condizione di uscita dal loop. Anche in questo caso potremmo utilizzare la direttiva Exit do per uscire anticipatamente dal ciclo.

Concetto di WindowsForm di VB.Net

Sia nelle precedenti versioni che nella nuova versione targata .Net, il concetto di WindowsForm è legato al fatto di poter creare una tipologia di applicazione denominata Windows Application. Ovvio che tutte le applicazioni stile Windows sono dotate di interfaccia grafica (detta anche GUI – Graphic User Interface – Interfaccia grafica utente). Prima di addentrarci in questo concetto lo accenniamo che tutti gli ambienti di sviluppo applicazioni .Net permettono anche di creare applicazioni stile Shell di Dos, ossia non dotate di interfaccia grafica ma solo testuale. Esse sono denominate Console Application. Le applicazioni dotate di interfaccia grafica sono caratterizzate da:

  • da una serie di controlli trascinabili sul Windows Form, attraverso una cassetta attrezzi presente in tutti gli ambienti di sviluppo
  • ad ogni controllo, per mezzo di una finestra di proprietà, imposteremo i vari attributi arricchendo e abbellendo lo stile del GUI dell’applicazione
  • oltre le impostazioni di proprietà assegneremo in alcuni casi a determinati controlli anche una routine evento
  • le routine evento caratterizzano le azioni di risposta da parte dell’applicazione per interagire con le richieste dell’utente (pressione di un tasto, scelta di un elemento da una lista, selezione di una voce da un menu, ecc…)

Da qui nasce che il Visual Basic attuale, che anche quello della precedente versione, è un linguaggio:

  • di programmazione visuale perchè permette di realizzare applicazioni non scrivendo codice, ma attraverso finestre, wizard preparati per facilitare il lavoro dello sviluppatore; a limite scriveremo solo il codice per rispondere agli eventi in funzione delle richieste dell’utente
  • orientato agli eventi: in quanto nella maggior parte dei casi, ad ogni controllo è associata una routine evento che risponde alle richieste dell’utente (esempio classico il clic su un pulsante di comando, ecc…)
  • orientato agli oggetti, in quanto attraverso la correlata gestione di oggetti, si possono creare applicazioni davvero snelle e di media complessità

di questi oggetti possiamo definire gli attributi dette proprietà, metodi, ed eventi. Su questi tre concetti chiavi si basa tutta l’architettura di applicazioni Visual Basic .Net. Infatti a differenza delle precedenti versioni, tutti i file di Visual Basic.Net hanno estensione .vb. Il contenuto di massima di un file, contenente le specifiche di un Windows form, è costituito da:

Public Partial Class MainForm
Public Sub New()
' The Me.InitializeComponent call is required 
'  for Windows Forms designer support.
Me.InitializeComponent()
' TODO : Add constructor code after InitializeComponents
'
End Sub
End Class

Ovvio che noi non scriveremo l’applicazione in questo modo, ossia scrivendo codice per questa classe, ma sarà l’ambiente di sviluppo ad aiutarci nella generazione di codice, quando disporremo i controlli su questa regione rettangolare:

uno o più Windows Form, come quelli rappresentati in figura (adesso li vedete vuoti, ma è possibile popolarli con dei controlli a seconda del problema che si sta informatizzando) li troviamo generalmente in una Windows Application, il cui file di progetto gerarchicamente è rappresentato da:

nel proseguio della lettura della guida troverete alcuni approfondimenti sui concetti sviluppati in questo capitolo. Concludiamo questo capitolo con le seguenti osservazioni:

  • nel file Mainform.vb
  • troveremo tutto il codice dello sviluppatore per gestire l’applicazion stessa, routine evento, proprietà, ecc…
  • nel file MainForm.Designer.vb troviamo invece tutto le specifiche dei controlli creati sul Windows Form e che poi saranno inizializzati, attraverso le direttive generate in automatico, e presenti in questo file, all’avvio dell’applicazione
  • tra le referenze troviamo alcuni namespace del Framework, necessari per far funzionare una Windows Application a run-time (System.Drawing, System.Windows.Forms)

Il GUI (Graphical User Inteface) viene costruito in modalità progettazione, attraverso una casella strumenti, la quale si attiva nell’ipotesi si scelga di creare una Windows Application. Questa casella strumenti è molto più nutrita di quella di Visual Basic 6.0. Rappresentiamo graficamente la casella strumenti:

Le collection e gli ArrayList in VB.Net

Abbiamo parlato di variabili e le abbiamo definite come aree di memoria dove memorizzare in modo temporaneo informazioni semplici, ossia un solo dato. Potremmo avere l’esigenza di memorizzare informazioni complesse. Allora a tale scopo utilizzeremo variabili strutturate, ossia gli array monodimensionali o pluridimensionali. Studiando il vecchio linguaggio di programmazione Basic, o altri linguaggi, queste tipologie di strutture dati debbono essere già conosciute, senza aggiungere particolari commenti. Tuttavia diciamo subito:

  • per array monodimensionali pensiamo ad una variabile strutturata ad un solo indice intero positivo. Attraverso questo indice noi possiamo immettere o modificare o cancellare l’elemento dalla struttura stessa. Memorizzeremo dati dello stesso tipo.
Dim numeri(1 to 10) as Integer

con questa dichiarazione potremmo memorizzare fino a 10 numeri. Essi saranno tutti di tipo intero. Potremmo avere anche l’esigenza di organizzare le nostre informazioni con l’uso di array pluridimensionali, ossia a due o più dimensioni. L’esempio classico è fornito dalle matrici. Ossia strutture di dati organizzati in righe e colonne. Il prodotto di righe per colonne ci restituisce il numero massimo di elementi memorizzabili. Per poter accedere ad un elemento di una matrice occorrerà far uso di due indici: l’indice delle righe e l’indice delle colonne. Due numeri interi positivi.

Dim numeri(1 to 10, 1 to 10) as integer

abbiamo dichiarato con questa riga di codice una matrice di 10 righe e 10 colonne. Saranno memorizzati valori di tipo integer. Volessimo memorizzare un dato all’interno di una matrice, o vettore (array monodimensionale) dovremmo scrivere la seguente istruzione di assegnazione:

.....
numeri(1)=460
numeri(2)=950
numeri(3)=1250
...

in una matrice invece avremo:

...
numeri(1,1)=460
numeri(1,2)=950
numeri(1,3)=1250
....

queste simili dichiarazioni le troviamo anche nei riferimenti del linguaggio Visual Basic.Net. Ampliando le nostre conoscenze sulle strutture di dati complesse, e facendo riferimento al Framework .Net, annoveriamo:

  • le Collection
  • gli ArrayList
  • le strutture enumerative

Le collection sono strutture dati le quali possono ospitare qualsiasi tipo di oggetto, e per propria natura, a differenza degli array, non sono fortemente tipizzati. Gli ArrayList sono una particolare struttura dati inclusa nel Framework .Net derivante dal namespace System.Collections.ArrayList. Quindi è una particolare collection. Vediamone qualche esempio. Facciamo l’esempio di dichiarazione, inizializzazione e aggiunta di elementi:

....
Dim objlist As ArrayList 
objlist=New ArrayList()
objlist.Add("casa")
objlist.Add("barca")
objlist.Add("pantalone")
objlist.Add("motore")
....

si dichiara una variabile di tipo ArrayList. Inizializziamo tale variabile con la clausola New. Con il metodo Add aggiungiamo l’elemento all’ArrayList. Volendo ordinare la lista, non dobbiamo are altro che utilizzare il metodo Sort.

...
objlist.Sort()
....

concludiamo questo capitolo affermando che la gestione di una collection è simile in tutto alla gestione di un ArrayList. Le strutture enumerative invece sono strutture dati particolarmente utili per definire un insieme, tipo:

  • l’insieme dei giorni della settimana
  • un insieme di costanti definite dall’utente
  • l’insieme dei mesi dell’anno
  • ecc.. ecc..

una struttura enumerativa viene dichiarata con la classe Enum. Esempio:

....
Public Module enumerazioni
Enum giorni_settimana
  Lunedì=1
  Martedì=2
  Mercoledì=3
  Giovedì=4
  Venerdì=5
  Sabato=6
  Domenica=7
End Enum
End Module

In questo modo abbiamo costruito un insieme di costanti intrinseche definite dall’utente sfruttando la classe di base Enum.

Gestione stringhe, date e funzioni con Microsoft.VisualBasic

Introduciamo l’argomento partendo dal fatto che le stringhe possono essere gestite in due modi:

  • con la libreria Microsoft.VisualBasic, e precisamente, come è stato già detto,attraverso il modulo Strings
  • sfruttando il fatto che le variabili ereditano metodi e proprietà del tipo di dato, attraverso il quale è stato dichiarato

sfruttando questo principio molto semplice avremo:

....
dim cognome as string
cognome="Rossi"
.....

provando ad utilizzare la notazione punto interviene l’intellinsense automatica di completamento istruzione:

in questa tabella riassumiamo i metodi che useremo per gestire le stringhe:

Metodi del Framework namespace System.String Descrizione
Length Restituisce la lunghezza dei caratteri contenuta in quella stringa
....
dim cognome as String
cognome="Rossi"
dim lunghezza as integer
lunghezza=Cognome.Length
Copy Può essere utile creare una nuova istanza dell’oggetto System.String con identico valore di quello di una istanza di tipo String specificata
...
Dim cognome as string="ROSSI"
Dim cognome1 as string="DE MARCO"
'Le due stringhe adesso sono diverse
cognome1=String.Copy(cognome)
'Dopo l'applicazione del metodo Copy
risulteranno cognome e cognome1 identiche
....
Concat Permette di ottenere la concatenazione di una o più stringhe. Realizziamo un piccolo esempio:
....
Dim cognome as string="DE ROSSI "
Dim saluto="CIAO "
Dim corso=" Stai leggendo la guida di Visual Basic.Net"
dim periodo as string
periodo=Concat(saluto,cognome,corso)
'Resistuirà come risultato
'Ciao DE ROSSI stai leggendo la guida di Visual Basic.Net
Replace Restituirà una stringa nella quale la sottostringa specificata è stata sostituita con un’altra sottostringa per un determinato numero di volte. Realizziamo un piccolo esempio:
....
dim data as string="30/05/2007"
dim nuovadata as string
nuovadata=Replace(data,"/","-",1,Len(data))
...
sara restituita la stringa nuovadata con il valore 30-05-2007. Gli argomenti per questa funzione sono:
  • la stringa nella quale applicare il metodo Replace
  • il carattere da cercare
  • l’indicazione del carattere da sostituire quando quel carattere al punto 2 sarà ricorrente
  • la posizione nella stringa, dove iniziare ad eseguire il metodo replace
  • la lunghezza della stringa rappresentata dal primo argomento
Funzioni ToUpper e ToLow Vengono utilizzate rispettivamente per restituire una stringa in Maiuscolo o in minuscolo
Funzione SubString Consente di restituire una sottostringa da una stringa specificata, dove passiamo come argomenti:
  • la posizione del carattere della sottostringa da restituire
  • il numero dei caratteri da restituire, il quali possono essere uguali alla lungehzza dei caratteri di quell’istanza oppure inferiori. Mai debbono essere maggiori
...
dim cognome as string="DE ROSSI MARCO"
dim restituirecaratteri as string
restituirecaratteri=Cognome.SubString(0,3)
'sarà restituita la sottostringa DE
...

Altre funzioni del modulo Strings della libreria Microsoft.VisualBasic sono documentate nella guida in linea del Framework .Net e possono essere oggetto di discussione anche in corsi medio-avanzati su questo linguaggio di programmazione visuale radicalmente rivoluzionato. Dopo aver esaminato alcune funzioni relative al modulo Strings, esaminiamo le funzione di gestione delle date. In tutte le applicazioni è ricorrente trovare informazioni di tipo temporale espresse sotto forma di date e/o ore, e quindi la libreria Microsoft.VisualBasic mette a disposizione di tutti i sviluppatori una serie di funzioni tipo:

  • Date
  • Time
  • Now
  • Day
  • Month
  • Year
  • ed altre funzioni

avremo:

....
console.Writeline(Now)
...
'Restituisce nella shell di Dos 11/06/2007 15.06.03

la funzione Now() restituisce la data comprensiva anche di orario.

....
console.Writeline(Day(Now))
....
'Restituisce nella shell di Dos 11

la funzione Day() restituisce il giorno partendo dalla data corrente. Notiamo l’uso delle funzioni nidificate. Come parametro alla funzione Day viene passata una funzione Now().

....
Console.Writeline(Month(Now))
....
'Restituisce nella shell di Dos 6

la funzione Month() restituisce il mese partendo dalla data corrente restituita dalla funzione Now(), parametro della funzione Month().

....
Console.Writeline(Year(Now))
....
'Restituisce nella shell di Dos 2007

la funzione Year() restituisce l’anno partendo dalla data corrente. Proviamo ad eseguire questo codice:

Dim objdata As Date
 objdata="25/05/2007"
 Dim objdata1 As Date 
 objdata1=Microsoft.VisualBasic.DateAdd(DateInterval.Day,5,objdata)
 Console.WriteLine(objdata)
 Console.ReadLine()
 Console.WriteLine(objdata1)
 Console.ReadLine()

a run-time avremo:

'il valore di objdata sarà 25/05/2007
'il valore dopo l'applicazione della funzione DateAdd sarà 30/05/2007

La funzione DateAdd permette di aggiungere un intervallo definito al valore di una certa data ottenendo una nuova data. Utilizzando la funzione WeekDay possiamo conoscere il giorno della settimana passando due argomenti:

  • la data anche quella di sistema
  • e una costante intrinseca della libreria Visual Basic FirstDayWeek, che indica il primo giorno della settimana

esempio:

dim gsett as integer
gsett=WeekDay(Now(),FirstDayWeek.System)
'Restituisce numericamente il giorno della settimana 
es. se è domenica il valore di gsett è 7

Il primo programma in VB.Net utilizzando Sharp Developer 2.1

Attraverso i riferimenti base del linguaggio Visual Basic .Net possiamo costruire un piccolo programmino, che ci permette di eseguire la somma di elementi memorizzati all’interno di un array. L’ottimo Ide (Integrated Development Environment – ambiente di sviluppo integrato) che utilizzeremo è di tipo open source per la tecnologia .Net. Si chiama Sharp Developer 2.1. Per poter installarlo sul vostro Personal Computer occorre avere il Framework .Net Redistribuitable Package 2.0 e Framework .Net Software Development Kit 2.0, entrambi nella versione italiana. Questi due componenti sono scaricabili direttamente dal sito di Microsoft. Con la versione 2005 di Visual Studio, anche Microsoft, e ne parleremo ampiamente nel prossimo capitolo, ha lanciato sul mercato le versioni Express di Visual Studio .Net 2005. L’ottimo Ide, di cui parlavamo prima, senza togliere elogi anche agli IDE delle versioni express di Visual Studio 2005 di Microsoft, è scaricabile gratuitamente al seguente link: http://www.icsharpcode.net/opensource/sd/download/Default.aspx Avviare dal menu di Start di Windows, Sharp Developer e selezionare Console Application Nella stessa finestra di dialogo assegnare anche un nome all’applicazione, ad esempio: somma_array.

Confermiamo con il pulsante Ok e verrà visualizzata la seguente finestra di codice:

all’interno del Modulo Main…. End Module inseriremo il seguente codice:

Sub Main()
Dim objnumeri As ArrayList 
objnumeri=New ArrayList 
Dim somma As Integer 
Dim continua As Boolean=true
Dim sceltautente As Char 
Console.WriteLine("Somma di elementi memorizzati in un Array List")

while continua=true
 Console.WriteLine("Inserire un numero:")
 objnumeri.Add(Console.ReadLine())
 Console.WriteLine("Vuoi continuare S/N:")
 sceltautente=Console.ReadLine()
 If sceltautente="N" Then
   continua=false
  End If
End While

'Risultato
 Dim contaelementi As Integer 
 contaelementi=objnumeri.Count
 Dim j As Integer 
 For j=0 To contaelementi-1
  somma=somma+objnumeri.Item(j)
  Next
  Console.Clear()
  Console.WriteLine("Risultato:")
  Console.WriteLine("Elementi inseriti:")
  Console.Writeline(contaelementi)
  Console.WriteLine("Somma risultante:")
  Console.WriteLine(somma)
  Console.readline()
  End Sub
End Module

commenti:

  • abbiamo dichiarato una variabile objnumeri di tipo ArrayList
  • una variabile di tipo integer dove memorizzeremo il risultato della somma
  • una variabile continua di tipo boolean per eseguire il ciclo di inserimento di più numeri
  • una variabile sceltautente dove acquisiremo il consenso S/N da parte dell’utente per aggiungere altri numeri

nella parte risultato dichiareremo:

  • contaelementi dove memorizzeremo il valore restituito dalla proprietà Count dell’oggetto objnumeri
  • eseguiamo un ciclo per eseguire la somma di tutti gli elementi dove la variabile contatore iniziale è 0 e la variabile finale è contaelementi-1; l’espressione somma=somma+objnumeri.item(j) permette di incrementare somma dei vari elementi alle diverse posizioni

essendo una applicazione stile Shell Dos, con l’oggetto Console potremmo mostrare i risultati a video.Per far ciò utilizzeremo il metodo WriteLine. Con l’oggetto Console.Readline() permetteremo all’utente di vedere i risultati a video e premendo enter della tastiera si chiuderà l’applicazione stessa. A run-time avremo:

acquisiamo le informazioni richieste dal problema: una serie di numeri. Ecco lo screenshot che rappresenta questo momento:

acquisendo ‘N’ e quindi non volendo più aggiungere altri elementi all’arraylist inizializzato con la clausola New(), e successivamente battendo enter della tastiera, avremo a video i risultati:

Scenario delle versioni Express per .Net

Con il lancio di Microsoft Visual Basic 2005 montato su Framework .Net 2.0, il team di sviluppo ha deciso anche di rivolgersi a:

  • principianti
  • appassionati
  • studenti universitari

target questo che persegue l’obiettivo di imparare a programmare per Windows. Infatti le tre caratteristiche, che accomunano i prodotti della linea Express, sono:

  • leggeri, circa 40 Mb a pacchetto includendo anche la documentazione
  • facili da utilizzare, in modo tale che possono avvicinarsi alla piattaforma .Net il target di persone elencato
  • intuitivi perchè grazie alla documentazione inclusa, possono realizzare tutte le applicazioni .Net in minor tempo, attraverso procedure guidate

I prodotti che fanno parte della linea Express, sono:

  • Microsoft Visual Basic 2005 Express Edition
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual J# 2005 Express Edition
  • Microsoft Visual Web Developer 2005 Express Edition

Al seguente link è possibile trovare l’home page dei dettagli dei prodotti della linea Express: Microsoft Visual Studio 2005 Express Edition Nell’elenco dei prodotti è stato menzionato anche Microsoft Visual Web Developer 2005 Express Edition. Questo prodotto innovativo permette di realizzare pagine dinamiche con Microsoft Asp.Net 2.0. Nell’ambiente di sviluppo è integrato un web server in grado di eseguire a run-time le pagine dinamiche realizzate.

Edizioni commerciali: Standard e Professional Edition

Nella fascia un pò più costosa, ma davvero utile, se si vogliono avere a portata di mano tutti gli strumenti di sviluppo senza nessuna limitazione, annoveriamo:

  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Basic 2005 Professional Edition

sul sito Microsoft al link: Dettagli Microsoft Visual Studio 2005 Standard Edition sempre sul sito Microsoft al link: Dettagli Microsoft Visual Studio 2005 Professional Edition sulla base dei dettagli che troverete rispettivamente cliccando sui due links, e rispetto alle esigenze dei progetti medio-grandi da sviluppare, sceglierete la versione che fa per voi. Ovvio che se se siete a digiuno di programmazione e intendiate conoscere la tecnologia .Net vi consiglio i prodotti della linea Express. Per applicazioni più complesse lato desktop oppure lato Web, che debbono interagire con database remoti, sceglierete tra due versioni: la Standard Edition oppure la Professional Edition.

Approccio ai database con VB.Net

Sia la precedente versione di Visual Basic che l’attuale permettono di progettare applicazioni complesse che interagiscono con basi di dati residenti sia in locale che in Rete Lan. Essendo prodotto Microsoft si interfaccia benissimo sia con DBMS (Data Base Management System – Software per la gestione di basi di dati) come Access, oppure SQL Server. Tutti coloro i quali hanno utilizzato Visual Basic 6.0, conoscono bene il funzionamento della libreria Microsoft ActiveX Data Objects Library. Essa permette di connettersi a database:

  • con estensione mdb (Access)
  • con estensione mdf (SQL Server)
  • con appositi driver per Oracle e Mysql l’applicazione VB6 riuscirà a connettersi a database Oracle e a quello più famoso dell’area Open Source

Un esempio di utilizzo di questa libreria è reperibile sul mrwebmaster al seguente link: Interazione di VB6 con i database con l’avvento della tecnologia .Net la libreria in argomento si è evoluta a tal punto che è nato ADO.Net. Ado.Net permette l’interoperabilità tra piattaforme e l’accesso dati scalabile a qualsiasi tipologia di DBMS:

  • Access come sempre
  • SQL Server 2000/2005
  • c’è la libreria MySQLData, che contiene classi Ado.Net, le quali permettono di instaurare una connessione con il DBMS Open Source MySql
  • Oracle

Concludiamo questo paragrafo della guida con lo stesso esempio reperibile a quel link, ma utilizzando le classi Ado.Net commentate in forma breve. La scalabilità di ADO.Net con altre piattaforme è possibile in quanto integra la trasformazione di basi di dati in formato XML (Exensible Markup Language). Con la classe Connection di Ado.Net potremmo instaurare la connessione ad una base dati utilizzando un determinato Provider dati, il quale prende il nome del DBMS utilizzato:

  • le connessioni a database per i quali esiste un Provider OLEDB, sarà OledbConnection
  • la connessione ad un database di tipo SQL Server avviene con il provider SQLClient, e la classe connection si chiama SQLConnection
  • per connettersi a database di tipo MySQL, esiste la libreria MySQLData e la classe Connection si chiama MySQLConnection

Con la classe Command potremmo eseguire azioni sulla base dati espresse attraverso comandi del linguaggio SQL (Structured Query Language). Per i rispettivi Provider Dati elencati prima avremo:

  • OledbCommand per provider dati OLEDB, utilizzato per connettersi a database tipo Access
  • SqlCommand per eseguire azioni su database di tipo SQL Server
  • MySqlCommand per eseguire azioni su database di MySql

Per leggere un recordset (una tabella o una query), come eravamo soliti fare con applicazioni VB6, esiste, per Ado.Net la classe DataReader. Per ogni provider Dati a questa classe si antepone:

  • suffisso oledb per provider OLEDB; diventa cosi OledbDataReader
  • Sql per database di tipo SQL Server; diventa SqlDataReader
  • MySql per database di MySql; diventa così MySqlDataReader

Introdotte brevemente queste classi, le applicheremo ad un esempio di tabella memorizzata in un DBMS tipo Access. Ammettiamo di avere due informazioni (tipo cognome e nome) acquisiti dall’utente, informazioni acquisite attraverso questo form:

in Sharp Developer per poter creare un form dovremmo all’avvio scegliere Windows Application e il linguaggio deve essere selezionato su VB.Net: basta che dalla pagina iniziale si clicca sul pulsante nuova soluzione. Salviamo il progetto in questo modo:

File / Salva con nome

nella cartella test da creare sotto il drive c:

c:test

all’interno di questa cartella troveremo tutti i file di progetto creati automaticamente dall’ambiente di sviluppo utilizzato. Sempre nella stessa cartella creeremo in Access un database prova.mdb con la tabella prova costituita dai seguenti campi:

  • id (contatore)
  • Cognome testo
  • Nome testo

appena completata questa operazione in Microsoft Access, ritorniamo al progetto e facciamo doppio clic sul bottone Inserisci; si apre la finestra di codice:

Sub Cmd_inserisci_dbClick(ByVal sender As Object, ByVal e As EventArgs)
    
End Sub

all’interno di quella routine bisognerà inserire il codice per automatizzare l’inserimento, dei dati immessi nel form, all’interno del database creato in Access. Vi ricordo di utilizzare la direttiva Imports al fine di aggiungere un riferimento al provider Oledb della classe del Framework System.Data. Sempre all’interno della stessa finestra di codice, prima di Public Partial Class….. occorrerà inserire:

Imports System.Data.Oledb

ritornando al codice per automatizzare l’inserimento nella base dati, avremo:

Dim objconn As OleDbConnection 
Dim stringaconn As String 
Dim stringasql As String 
Dim objcomm As OleDbCommand 
stringaconn="Provider=Microsoft.JET.OLEDB.4.0;Data Source=" 
stringaconn=stringaconn & "c:testprova.mdb"
objconn=New OleDbConnection(stringaconn)
objconn.Open()
stringasql="Insert into prova(cognome,nome) values('"
stringasql=stringasql & Me.txt_cognome.Text & "'" & ","
stringasql=stringasql & "'" & me.txt_nome.Text & "'" & ")"
objcomm=New OleDbCommand(stringasql,objconn)
Dim risputente As Integer 
try
risputente=objcomm.ExecuteNonQuery()
If risputente=1 Then
 msgbox("Inserimento effettuato con successo")
 objconn.Close()
 Me.txt_cognome.Text=""
 Me.txt_nome.Text=""
 Me.txt_cognome.Focus()
End If
 Catch es As Exception
 msgbox("Errore: il campo cognome e/o nome sono vuoti")
 objconn.Close()
end try

commenti:

  • dichiariamo la variabile objconn di tipo OledbConnection (la classe per configurare la connessione alla base dati Access)
  • dichiariamo la variabile stringaconn di tipo stringa per memorizzare la la stringa di connessione da passare all’oggetto Oledbconnection
  • dichiariamo la variabile stringasql di tipo stringa per memorizzare concatenando l’istruzione SQL Insert into…
  • dichiariamo la variabile objcomm di tipo OledbCommand per configurare l’azione da eseguire sulla base dati alla quale ci siamo connessi

per inizializzare l’oggetto OledbConnection si utilizza la riga di codice:

stringaconn="Provider=Microsoft.JET.OLEDB.4.0;Data Source="
stringaconn=stringaconn & "c:testprova.mdb"
objconn=New OledbConnection(stringaconn)
objconn.Open()

per eseguire l’azione Sql sul database avremo:

stringasql="Insert into prova(cognome,nome) values('"
stringasql=stringasql & me.txt_cognome.text & "'" & ","
stringasql=stringasql & "'" & me.txt_nome.text & "'" & ")"

objcomm=New OledbCommand(stringasql,objconn)
...

con il metodo ExecuteNonQuery viene eseguita l’azione sql definita dalla variabile stringasql. Se tutto va a buon fine sarà restituito 1 e memorizzato nella variabile risputente. Con un costrutto if verifichiamo che viene restituito quel valore ed eseguiremo le seguenti istruzioni:

  • visualizzazione messaggio all’utente "Inserimento effettuato con successo" per mezzo dell’istruzione MsgBox
  • chiudiamo la connessione
  • puliamo le due caselle di testo del form
  • riportiamo, con il metodo Focus lo stato attivo del controllo sulla casella cognome

a run-time avremo:

clicchiamo sul pulsante di comando inserisci e verrà visualizzato questo messaggio, nell’ipotesi l’inserimento, dei dati nel db, vada a buon fine:

aprendo il database di access prova.mdb avremo:

Al fine di gestire il comportamento dell’utente, e nella fattispecie ammettendo che lo stesso non compili i controlli del form e prema ugualmente il pulsante inserisci, ho inserito le istruzioni che eseguono l’azione Sql sul database, all’interno del costrutto Try…. Catch, di modo chè a run-time verrà gestito l’errore personalizzato e non quello del framework che farà bloccare l’esecuzione dell’applicazione stessa. Siamo giunti al termine di questa guida che vi ha delineato i riferimenti essenziali del linguaggio Visual Basic.Net. Vi accorgerete che, al termine della lettura dell’intera guida, sarete stimolati a chiedere maggiori approfondimenti. Questi maggiori approfondimenti speriamo che si concretizzano in un corso completo dove si potranno approfondire:

  • i riferimenti del linguaggio oltre quelli mensionati nella guida stessa
  • l’interazione con i database che non si esaurisce nel piccolo esempio esplicativo mostrato al fine di capire in linea di massima il funzionamento di Ado.Net
  • le diverse tipologie di applicazioni realizzabili con Visual Basic.Net
Pubblicitร 

Leggi anche...

Accorgimenti per la scrittura di codice efficiente in C#

Nella scrittura del codice delle proprie applicazioni uno sviluppatore...

Visual Studio 2012: l’ambiente di sviluppo di casa Microsoft

Visual Studio 2012 è l'ultima versione dell'ambiente di sviluppo...

Utilizzo del controllo DataGridView

Il controllo DataGridView è uno di quelli disponibili in...

Sviluppare in ASP.Net con Visual Studio

L'obiettivo della presente guida è quello di introdurvi alle...

Algoritmi di ordinamento in C#

L'ordinamento di una lista di oggetti è uno dei...

Guida Visual Studio 2008

L'uscita di Visual Studio 2005 ha rappresentato la più...
Pubblicitร