Linguaggio Visual Basic – Estrazione di numeri per la tombola
Prendendo spunto dal gioco della tombola, l’esercitazione ha lo scopo di:
- definire una funzione che restituisce un valore al codice chiamante tramite l’istruzione Return;
- utilizzare la classe Random per la generazione di numeri pseudo-casuali;
- generare una scansione dei controlli presenti nel form (Me.Controls) attraverso il costrutto For Each … Next per evidenziare le caselle corrispondenti ai numeri estratti.
Public Class frm_Tombola Dim NumeriEstratti(90) As Short Private Sub btn_EstraiNUmero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_EstraiNUmero.Click Dim NomeCasella As String lbl_NumeroEstratto.Text = NumeroEstratto() NomeCasella = "txt_Numero" & lbl_NumeroEstratto.Text Dim CasellaEstratta As Control For Each CasellaEstratta In Me.Controls If CasellaEstratta.Name = NomeCasella Then CasellaEstratta.BackColor = Color.PaleVioletRed CasellaEstratta.ForeColor = Color.Wheat Exit For End If Next End Sub Private Function NumeroEstratto() As Short Dim Casuale As New Random Dim Beccato As Boolean = False NumeroEstratto = 0 While Beccato = False NumeroEstratto = Casuale.Next(1, 91) If NumeroEstratto = NumeriEstratti(NumeroEstratto - 1) Then Beccato = False Else Beccato = True NumeriEstratti(NumeroEstratto - 1) = NumeroEstratto End If End While Return NumeroEstratto End Function End Class
Le 90 TextBox potevano essere implementate anche da codice mediante la seguente routine:
Public Sub CostruisciTabellone() Dim PosX As Short = 20, PosY As Short = 20 Dim TipoCarattere As New Font("Verdana", "12") Dim Riga, Colonna As Integer For Riga = 1 To 9 For Colonna = 1 To 10 Dim Casella As New TextBox With Casella .Font = TipoCarattere .BackColor = Color.WhiteSmoke .ForeColor = Color.Gray .Name = "txt_Numero" & (Riga - 1) & Colonna .Width = 45 .Left = PosX + .Width * (Colonna - 1) .Top = PosY + .Height * (Riga - 1) .Text = (Riga - 1) * 10 + Colonna .Visible = True .TextAlign = HorizontalAlignment.Center .ReadOnly = True .TabStop = False End With Me.Controls.Add(Casella) Next Next End Sub
Visite: 508
domenica 21 Gennaio - 2018