Sommario
Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Parte I
1
Introduzione a Microsoft Visual Basic 2010
L’ambiente di sviluppo integrato (IDE) di Visual Studio . . . . . . . . . . . . 3
L’ambiente di sviluppo di Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Gli strumenti di Visual Studio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
La finestra Progettazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Esecuzione di un programma Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
La finestra Proprietà. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Spostamento e ridimensionamento degli strumenti di programmazione . . . . . 17
Spostamento e ridimensionamento delle finestre degli strumenti. . . . . . . . 18
Ancoraggio delle finestre degli strumenti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Nascondere le finestre degli strumenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Passaggio da uno strumento o un file aperto all’altro utilizzando
IDE Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Apertura di un browser Web in Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Come cercare supporto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Gestire le impostazioni della Guida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Uso del tasto funzione F1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Personalizzazione delle impostazioni IDE per gli esercizi di questo libro . . . . . 29
Impostazione dell’IDE per lo sviluppo in Visual Basic . . . . . . . . . . . . . . . . . . . 29
Verifica delle impostazioni del progetto e del compilatore. . . . . . . . . . . . . . 31
Procedura aggiuntiva: uscire da Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Riferimenti rapidi del capitolo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
2
Il tuo primo programma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Lucky Seven: il tuo primo programma in Visual Basic . . . . . . . . . . . . . . . . . . . . . . 37
Passaggi di programmazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Creazione dell’interfaccia utente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Impostazione delle proprietà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Proprietà della casella immagine (PictureBox). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Scrivere il codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Uno sguardo alla routine Button1_Click . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Esecuzione di applicazioni Visual Basic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Progetti di esempio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Creazione di un file eseguibile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
ix
x
Sommario
Distribuzione della tua applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Procedura aggiuntiva: aggiunte a un programma . . . . . . . . . . . . . . . . . . . . . . . . . 63
Riferimenti rapidi del capitolo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
3
Utilizzo dei controlli della Casella degli strumenti. . . . . . . . . . . . . . . . 67
Utilizzo base dei controlli: il programma Hello World. . . . . . . . . . . . . . . . . . . . . . 67
Utilizzo del controllo DateTimePicker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Il programma Birthday . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Controlli per la raccolta di input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Utilizzo di caselle di gruppo e pulsanti di opzione . . . . . . . . . . . . . . . . . . . . . 81
Elaborazione dell'input con le caselle di riepilogo. . . . . . . . . . . . . . . . . . . . . .84
Cenni di terminologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Procedura aggiuntiva: utilizzo del controllo LinkLabel . . . . . . . . . . . . . . . . . . . . . 91
Riferimenti rapidi del capitolo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4
Utilizzo di menu, barre degli strumenti e finestre di dialogo . . . . . . 97
Aggiunta di menu utilizzando il controllo MenuStrip . . . . . . . . . . . . . . . . . . . . . 97
Aggiunta di tasti di scelta ai comandi di menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Elaborazione delle scelte di menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102
Aggiunta di barre degli strumenti con il controllo ToolStrip . . . . . . . . . . . . . . .107
Utilizzo dei controlli delle finestre di dialogo . . . . . . . . . . . . . . . . . . . . . . . . . . . .110
Routine evento che gestiscono le finestre di dialogo comuni . . . . . . . . . . . . . .112
Procedura aggiuntiva: Assegnazione di tasti di scelta rapida ai menu . . . . . . . 117
Riferimenti rapidi del capitolo 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
Parte II
5
Principi fondamentali di programmazione
Variabili e formule di Visual Basic e Framework .NET . . . . . . . . . . . . 123
Struttura di un’istruzione in Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123
Utilizzo di variabili per memorizzare informazioni. . . . . . . . . . . . . . . . . . . . . . . .124
Prenotazione di memoria per le variabili: l’istruzione Dim . . . . . . . . . . . . 124
Dichiarazione implicita delle variabili. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126
Utilizzo di variabili in un programma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127
Utilizzo di una variabile per memorizzare un input . . . . . . . . . . . . . . . . . . . . . . .130
Utilizzo di una variabile per ottenere un output. . . . . . . . . . . . . . . . . . . . . . . . . .133
Utilizzo di tipi di dati specifici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135
Costanti: variabili che non cambiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142
Utilizzo degli operatori di Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
Matematica di base: Gli operatori +, –, *, e /. . . . . . . . . . . . . . . . . . . . . . . . . .144
Utilizzo degli operatori avanzati: \, Mod, ^, e & . . . . . . . . . . . . . . . . . . . . . . 147
Utilizzo di metodi matematici in Microsoft .NET Framework. . . . . . . . . . . . . . .152
Sommario
xi
Procedura aggiuntiva: definizione di un ordine di precedenza . . . . . . . . . . . . . 155
Utilizzo di parentesi in una formula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156
Riferimenti rapidi del capitolo 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156
6
Utilizzo delle strutture decisionali . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Programmazione basata su eventi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159
Utilizzo delle espressioni condizionali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Strutture decisionali If . . . Then . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Test di varie condizioni in una struttura decisionale If . . . Then . . . . . . . . . .162
Utilizzo degli operatori logici in espressioni condizionali . . . . . . . . . . . . . .167
Effettuare operazioni di corto circuito tramite l’utilizzo di AndAlso
e OrElse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169
Strutture decisionali Select Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Utilizzo di operatori di confronto con una struttura Select Case . . . . . . . . 173
Procedura aggiuntiva: rilevazione di eventi del mouse . . . . . . . . . . . . . . . . . . . .177
Riferimenti rapidi del capitolo 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
7
Utilizzo di cicli e timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Creazione di cicli For . . . Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181
Utilizzo di una variabile contatore in un controllo
TextBox a più righe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183
Creazione di cicli For . . . Next complessi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185
Utilizzo di un contatore in un ambito allargato . . . . . . . . . . . . . . . . . . . . . . .189
Scrittura di cicli Do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192
Come evitare i cicli infiniti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193
Il controllo Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196
Creazione di un orologio digitale utilizzando un controllo Timer . . . . . . . . . .197
Utilizzo di un oggetto timer per impostare un limite di tempo. . . . . . . . . . . . .200
Procedura aggiuntiva: inserimento di frammenti di codice . . . . . . . . . . . . . . . .203
Riferimenti rapidi del capitolo 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207
8
Debug dei programmi Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Ricerca e correzione degli errori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .209
Tre tipi di errore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210
Identificazione degli errori di logica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211
Faccia a faccia con il debug: utilizzo della modalità di debug . . . . . . . . . . . . . .212
Analisi delle variabili utilizzando la finestra Espressione di controllo . . . . . . . . 217
Visualizzatori: strumenti di debug che mostrano dei dati. . . . . . . . . . . . . . . . . .220
Utilizzo della Finestra di controllo immediato e della
Finestra di comando. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221
Come passare alla Finestra di comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223
xii
Sommario
Procedura aggiuntiva: eliminazione dei punti di interruzione . . . . . . . . . . . . . .224
Riferimenti rapidi del capitolo 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225
9
Gestione strutturata degli errori. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Gestione degli errori con l’istruzione Try . . . Catch . . . . . . . . . . . . . . . . . . . . . . .227
Quando utilizzare i gestori di errori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228
Impostazione di un gestore: il blocco di codice Try. . . Catch . . . . . . . . . . . .229
Errori di percorso e di unità disco. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229
Scrittura di un gestore di errori dell’unità disco . . . . . . . . . . . . . . . . . . . . . . . . . .233
Utilizzo della clausola Finally per eseguire attività di pulitura . . . . . . . . . . . . . .234
Gestori di errori Try . . . Catch sofisticati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
L'oggetto Exception. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
Determinazione del numero di tentativi possibili . . . . . . . . . . . . . . . . . . . . .239
Utilizzo di blocchi Try . . . Catch nidificati . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242
Gestori di errori o tecniche di programmazione sicura? . . . . . . . . . . . . . . . . . . .242
Procedura aggiuntiva: l’istruzione Exit Try . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243
Riferimenti rapidi del capitolo 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244
10
Creazione di moduli e routine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Lavorare con i moduli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Creazione di un modulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248
Utilizzo delle variabili pubbliche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Creazione di routine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Scrittura di routine Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256
Sintassi di Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .257
Chiamata di una routine Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258
Utilizzo di una funzione per effettuare un calcolo . . . . . . . . . . . . . . . . . . . .258
Scrittura di routine Sub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
Sintassi di una routine Sub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
Chiamata di una routine Sub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263
Usare una routine Sub per gestire l'input . . . . . . . . . . . . . . . . . . . . . . . . . . . .264
Procedura aggiuntiva: Passaggio di argomenti per valore e
per riferimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
Riferimenti rapidi del capitolo 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .270
11
Utilizzo di array per gestire dati numerici e stringa. . . . . . . . . . . . . . 273
Utilizzo di array di variabili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273
Creazione di un array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Dichiarazione di un array a lunghezza fissa. . . . . . . . . . . . . . . . . . . . . . . . . . .275
Allocazione della memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Utilizzo degli elementi di un array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277
Sommario
xiii
Dichiarazione di un array e assegnazione dei relativi valori iniziali . . . . . .278
Creazione di un array di lunghezza fissa in cui memorizzare delle
temperature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
Creazione di un array dinamico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283
Protezione del contenuto di un array mediante ReDim Preserve . . . . . . . . . . .287
Utilizzo di ReDim per gli array tridimensionali . . . . . . . . . . . . . . . . . . . . . . . .288
Procedura aggiuntiva: elaborazione di array di grandi dimensioni
utilizzando i metodi della classe Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .288
La classe Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .288
Riferimenti rapidi del capitolo 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295
12
Utilizzo degli insiemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Utilizzo di insiemi di oggetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297
Riferimento agli oggetti di un insieme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .298
Creazione di cicli For Each. . . Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .298
Utilizzo degli oggetti dell’insieme Controls . . . . . . . . . . . . . . . . . . . . . . . . . .299
Utilizzo della proprietà Name in un ciclo For Each . . . Next . . . . . . . . . . . . .302
Creazione di insiemi personali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .304
Dichiarazione di nuovi insiemi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .304
Procedura aggiuntiva: gli insiemi VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .309
Creazione di una macro di Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Riferimenti rapidi del capitolo 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
13
Esplorazione di file di testo ed elaborazione delle stringhe . . . . . . . 313
Lettura dei file di testo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Lo spazio dei nomi My . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
La classe StreamReader. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Utilizzo del metodo ReadAllText. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Scrittura dei file di testo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321
Il metodo WriteAlleText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321
La classe StreamWriter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322
Utilizzo del metodo WriteAllText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .323
Elaborazione delle stringhe tramite la classe String . . . . . . . . . . . . . . . . . . . . . .326
Ordinamento del testo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329
Utilizzo dei codici ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .330
Ordinamento delle stringhe in una casella di testo . . . . . . . . . . . . . . . . . . . . 331
Esame del codice del programma Sort Text . . . . . . . . . . . . . . . . . . . . . . . . . .334
Protezione del testo con la crittografia di base . . . . . . . . . . . . . . . . . . . . . . . . . .336
Procedura aggiuntiva: Utilizzo dell'operatore Xor . . . . . . . . . . . . . . . . . . . . . . . .340
Analisi del codice del programma di crittografia. . . . . . . . . . . . . . . . . . . . . .342
Riferimenti rapidi del capitolo 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .345
xiv
Sommario
Parte III
14
Progettazione dell’interfaccia utente
Gestione di form e controlli Windows in fase di esecuzione . . . . . . 351
Aggiunta di nuovi form a un programma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Utilizzo dei form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352
Utilizzo di più form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352
Utilizzo della proprietà DialogResult nel form di chiamata . . . . . . . . . . . . .358
Posizionamento dei form sul desktop di Windows . . . . . . . . . . . . . . . . . . . . . . .359
Riduzione, ingrandimento e ripristino delle finestre . . . . . . . . . . . . . . . . . . .364
Aggiunta di controlli a un form in fase di esecuzione . . . . . . . . . . . . . . . . . . . . .364
Organizzazione dei controlli in un form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .367
Procedura aggiuntiva: selezione dell’oggetto di avvio . . . . . . . . . . . . . . . . . . . .371
Riferimenti rapidi del capitolo 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .373
15
Aggiunta di elementi grafici ed effetti di animazione . . . . . . . . . . . 375
Aggiunta di grafica utilizzando lo spazio dei nomi System.Drawing . . . . . . . . 376
Utilizzo del sistema di coordinate di un form. . . . . . . . . . . . . . . . . . . . . . . . . 376
La classe System.Drawing.Graphics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Utilizzo dell’evento Paint del form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .378
Aggiunta di animazione ai programmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .380
Spostamento degli oggetti in un form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .380
Proprietà Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .381
Creazione di animazioni mediante un oggetto Timer. . . . . . . . . . . . . . . . . .382
Espansione e compressione di oggetti durante l’esecuzione
di un programma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .386
Procedura aggiuntiva: Modifica della trasparenza di un form . . . . . . . . . . . . . .388
Riferimenti rapidi del capitolo 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .390
16
Ereditarietà dei form e creazione di classi base . . . . . . . . . . . . . . . . . 393
Ereditarietà di un form tramite Selezione ereditarietà . . . . . . . . . . . . . . . . . . . .393
Creazione di classi base personali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .399
Aggiunta di una nuova classe a un progetto . . . . . . . . . . . . . . . . . . . . . . . . .401
Procedura aggiuntiva: Ereditarietà di una classe base . . . . . . . . . . . . . . . . . . . . .408
Riferimenti rapidi del capitolo 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .412
17
Utilizzo delle stampanti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Utilizzo della classe PrintDocument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Stampa del testo da un oggetto casella di testo . . . . . . . . . . . . . . . . . . . . . .420
Stampa di file di testo composti da più pagine. . . . . . . . . . . . . . . . . . . . . . . . . . .424
Sommario
xv
Procedura aggiuntiva: Aggiunta delle finestre di dialogo
Anteprima di stampa e Imposta pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .430
Riferimenti rapidi del capitolo 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .437
Parte IV
18
Programmazione di database e per il Web
Introduzione ad ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
Programmazione di database con ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . .441
Terminologia per i database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .442
Utilizzo di un database Access. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .444
La finestra Origini dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .452
Utilizzo di controlli associati per visualizzare le informazioni
di un database. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .458
Procedura aggiuntiva: istruzioni SQL, LINQ e filtro dei dati . . . . . . . . . . . . . . . .461
Riferimenti rapidi del capitolo 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .466
19
Presentazione dei dati mediante il controllo DataGridView . . . . . . 467
Utilizzo di DataGridView per visualizzare i record di un database . . . . . . . . . .467
Formattazione delle celle di DataGridView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
Aggiunta di un secondo oggetto visualizzazione griglia dati . . . . . . . . . . . . . .482
Procedura aggiuntiva: aggiornamento del database originale . . . . . . . . . . . . .485
Riferimenti rapidi del capitolo 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .488
20
Creazione di siti e pagine Web con Visual Web Developer e
ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Parliamo di ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .491
Confronto tra pagine Web e Windows Form . . . . . . . . . . . . . . . . . . . . . . . . .493
Controlli server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .493
Controlli HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .494
Creazione di un sito Web con Visual Web Developer . . . . . . . . . . . . . . . . . . . . .495
Analisi dei requisiti software per la programmazione in ASP.NET . . . . . . .495
Utilizzo di Web Page Designer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .498
Aggiunta di controlli server a un sito Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .501
Creazione di routine evento per i controlli delle pagine Web . . . . . . . . . . .504
Personalizzazione del modello di sito Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .509
Visualizzazione dei record di un database in una pagina Web . . . . . . . . . . . . .512
Procedura aggiuntiva: Impostazione del titolo di un sito Web
in Internet Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
Riferimenti rapidi del capitolo 20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .522
xvi
Sommario
Appendice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Indice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
Ringraziamenti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Autore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547