In questo articolo, ti spiego come realizzare una semplice applicazione “Visual Baisc” con ” Visual Studio 2019″ per gestire una matrice, visualizzarla in un controllo appropriato appunto “DataGridView”, ed eseguire uan semplice operazione quale la somma degli elementi.
Se vuoi puoi abbonarti al sito specialistico per vedere il Video Completo di come realizzare questo progetto
Indice dei contenuti:
Le matrici in Visual Basic
Le matrici, sono un oggetto matematico caratterizzato da una rappresentazione tabellare in righe e colonne. In informatica sono una struttura dati omogenea in quanto i suoi elementi sono tutti della stessa tipologia. La matrice è “quadrata” se il numero delle righe è uguale al numero delle colonne.
Le matrici sono dichiarate in “Visual Basic” mediante la sintassi:
Dim | Public | Nome Identificatore Matrice(numero righe, numero colonne) As Tipo Dati;
Ad esempio
Public matrice(10,20) as Integer
dichiara una matrice di 10 righe e 20 colonne di interi, globale ovvero visibile in tutte le componenti del progetto classi, interfacce, moduli.
In “Visual Basic ” si suole indicare il primo elemento di matrice con la coppia di coordinate “1,1”, ma è possibile anche partire da “0,0”.
La struttura dati è memorizzata in memoria RAM e quindi è temporanea, ad accesso diretto attraverso due indici ad esempio “i” e “j” che variano nell’intervallo del numero di righe e del numero di colonne.
Per inserire i dati nella matrice è possibile utilizzare in “Visual Basic” un doppio ciclo “for” e utilizzare una finestra di dialogo “InputBox” per inserire un elemento per volta nella matrice.
Il codice è questo: (inserito in un modulo)
Public Sub Carica()
Dim i,j as Integer
Dim n,m as Integer
Dim matrice(10,10) As Integer
n=Cint(Input("Numero delle righe", "Richiesta input"))
m=Cint(Input("Numero delle colonne", "Richiesta input"))
For i= 1 to n
For j= 1 to m
matrice(i,j)=Cint(Inputbox("Inserisci elemento","Richeista Input"))
Next j
Next i
End Sub
La somma degli elementi di una matrice è ancora più semplice infatti, attraverso un “doppio ciclo” viene eseguita la somma cella per cella.
Il codice è:
Public Sub Carica()
Dim i,j As Integer
Dim somma As Integer
For i= 1 to n
For j= 1 to m
somma=somma+matrice(i,j)
Next j
Next i
End Sub
Questo nell’ipotesi che le dimensioni della matrice e la matrice stessa siano dichiarate “public” in modulo.
Ovviamente la differenza sostanziale con gli altri linguaggi di programmazione è l’uso delle parentesi “tonde” e della virgola per indicar un elemento specifico della matrice.
Il controllo DataGridView
Il problema più importante nell’uso delle matrici e in generale di dati strutturati è quello di trovare un controllo GUI di “Visual Basic” e/o di “Windows Form” che permetta di organizzare la visualizzazione in modo corretto.
Il controllo “DatagridView” è utile allo scopo, lo puoi individuare all’interno delgi strumenti di progettazione, descrivere tutte le funzionalità sarebbe un lavoro lungo, ci limitiamo a spiegare quanto serve per la nostra semplice applicazione.
Il controllo “DataGridView” permette il caricamento di dati da una sorgente esterna quali un Database, un foglio “Excel”, un file “CSV”, un file di testo con separatori di campo, ed altro ancora. In questo caso la proprietà “DataSource” non non deve essere impostata.
Nel controllo sono presenti due “collezioni” “Rows” e “columns” che rappresentano l’insieme delle colonne e delle righe del mio controllo “DataGridView”. Il controllo può essere di sola lettura, o anche di scrittura, aggiornamento, cancellazione, inserimento. Per decidere questo la proprietà “ReadOnly” deve essere impostata a “False”, per permettere la scrittura nelle celle del controllo.
Questo controllo possiede anche le intestazioni di riga e di colonna.
La collezione “Rows” e la collezione “Columns” prevede diversi metodi il primo metodo è “Add()”. Il metodo prevede argomenti e comportamenti diversi a seconda se riguarda una riga o una colonna.
In merito alla riga, tu potresti dichiarare una riga come una stringa con separatori e aggiungere tale riga alla tua “DataGridView”. Ad esempio:
Dim riga As String() = new String() {“001″,”PC”,”10″,”1302.5″} e poi aggiungere la riga con il metodo “Add”.
DataGridView.Add(riga)
Per le colonne, è possibile utilizzare la collezione “Columns” utilizzando il metodo “Add(nome colonne, intestazione colonna)” entrambi gli argomenti sono due stringhe; infatti il primo è il nome della colonna per inteso è il valore della proprietà “Name”, mentre la seconda stringa è l’intestazione o titolo della colonna.
Anche il metodo “Remove()”, prevede di indicare il nome della colonna per cancellarla dal “DataGridView”.
Per aggiungere un’intestazione di riga è possibile utilizzare il metodo “HeaderCell” della collezione “Rows” secondo la seguente sintassi:
Nome Controllo DataGridView.Rows(numero riga).HeaderCell.Value=testo dell’intestazione
Resta infine, da comprendere come inserire un valore all’intero della singola cella della “DataGridView”, basta utilizzare il controllo come una matrice ovvero utilizzando la sintassi:
nome controllo DataGridView(riga-1, colonna -1).Value = valore
Il le coordinate di riga e colonna sono diminuite di uno poiché per il controllo si conteggiano anche le celle che hanno coordinate pari a zero.
U/n’ultima osservazione, riguarda l’ambito di visibilità del controllo, in generale su ogni controllo su un “Form”. La classe “Form” che viene creata è pubblica, quindi per poter utilizzare metodi all’esterno ad esempio in un modulo occorre “nominare” prima il genitore o “superclasse” che contiene quel particolare controllo.
Il progetto
Il progetto che adesso ti illustro prevede la creazione di una finestra con un controllo “DataGridView” che conterrà gli elementi di matrice, la somma degli elementi ti verrà mostrata in una casella di testo.
Per creare un progetto, come al solito, scegli “nuova soluzione”, “Windows Forms”, “Visual Basic”, poi assegna un nome ad esempio “Progetto_Matrice”, salva in una cartella da te preferita, poi scegli come “Framework” “5.0 .Net Framework”.
Posiziona sul Form i controlli come mostrato qui sottto.

Il nostro “Form” è costituito da i seguenti controlli:
Tipologia Controllo | Descrizione | Proprietà | Valore |
DataGridView | Controllo per l’inserimento di dati in forma tabellare, anche da sorgenti esterne. | Name | tablectrl |
TextBox | Casella di testo | Name | txtr |
Button | Pulsanti di comando | Name | cmdCarica cmdCalcola cmdFine cmdCancella |
Button | Pulsanti di comando | Text | Carica Matrice, Somma Matrice, Cancella Matrice, Fine |
Elenco dei controlli del “Form”.
Definita l’interfaccia grafica a singola finestra, nel menù Progetto, Inserisci, Modulo e in questo modo possiamo inserire il codice di controllo (elaborazione) della nostra applicazione. Io ti consiglio di limitare al minimo la gestione ed elaborazione dell’applicazione nel codice della classe associata al “Form”.
Il codice della classe “Form1” è:
Public Class Form1
Private Sub cmdfine_Click(sender As Object, e As EventArgs) Handles cmdfine.Click
Application.Exit()
End Sub
Private Sub cmdcarica_Click(sender As Object, e As EventArgs) Handles cmdcarica.Click
Call carica()
End Sub
Private Sub cmdcancella_Click(sender As Object, e As EventArgs) Handles cmdcancella.Click
tablectrl.Rows.Clear()
Dim i As Integer
For i = 1 To n
tablectrl.Columns.Remove(CStr(i))
Next
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Label1.Text = "Elementi della matrice"
Label2.Text = "Somma: "
'Me.Text = "Prova 2"
Call setup()
End Sub
Private Sub cmdsomma_Click(sender As Object, e As EventArgs) Handles cmdsomma.Click
Call CalcolaSomma()
End Sub
End Class
In questo codice sono richiamate le procedure senza parametri alla pressione dei relativi pulsanti. Le uniche novità sono legate alla possibilità di assegnare proprietà dinamicamente all’avvio del caricamento del “Form”, l’ho fatto per le “Label” e per il titolo del “Form”, e la cancellazione delle righe dal controllo “DataGridView” direttamente nella classe del “Form”.
Vediamo ora il codice del modulo:
Option Explicit On
Module Module1
Public matrice(20, 20) As Integer
Public n, m As Integer
Public somma As Integer
Public Sub setup()
Form1.Text = "Operazioni Matrice"
End Sub
Public Sub carica()
Dim i, j As Integer
n = CInt(InputBox("Quante righe ?", "Richiesta input"))
m = CInt(InputBox("Quante collone ?", "Richiesta input"))
For i = 1 To m
Form1.tablectrl.Columns.Add(i, CStr(i))
Next
For i = 1 To n
Form1.tablectrl.Rows.Add()
Form1.tablectrl.Rows(i - 1).HeaderCell.Value = CStr(i)
Next
For i = 1 To n
For j = 1 To m
matrice(i, j) = CInt(InputBox("Inserisci elemento di posto" &
i & "," & j, "Richiesta input"))
Form1.tablectrl(j - 1, i - 1).Value = matrice(i, j)
Next
Next
End Sub
Public Sub CalcolaSomma()
somma = 0
Dim i, j As Integer
For i = 1 To n
For j = 1 To m
somma = somma + matrice(i, j)
Next
Next
Form1.txtr.Text = somma
End Sub
End Module
Nel codice del Modulo è presente tutto il codice di elaborazione dell’applicazione dal caricamento della matrice, al calcolo della somma degli elementi, e la predisposizione del controllo “DataGridView”, come esposto nei paragrafi precedenti.