cuore napoletano (Normal User)
Pro
Messaggi: 129
Iscritto: 03/02/2011
|
Questo topic è stato chiuso dal moderatore Buongiorno.
ho una domanda riguardo al seguente codice :
Dim contatore As Integer = 1
For Each Pulsante As Control In Me.Controls
If TypeOf Pulsante Is TextBox Then
Pulsante.Text = contatore
contatore = contatore + 1
End If
Next
Perchè procede dall'ultima texbox fino alla prima e come fare per ottenere l'ordine opposto?
Grazie saluti
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
|
(cià Cumpà)
L'ordine degli elementi contenuti nel Form padre vengono enumerati in un modo diverso
da come si può pensare, Quello che ci inganna è proprio il fatto di avere TextBox1,TextBox2,TextBox3.
Ma in realtà vengono enumerati in
TextBox3,
TextBox2,
TextBox1
E molto semplice, Basta eseguire un cast sull'enumeratore e invertire l'ordine
Con un uso intermedio di Linq si risolve tutto
Chiedo scusa, Ma non me la cavo bene in Vb.net
Preferisco scrivere la soluzione in C# e magari puoi convertire il codice con uno dei tanti servizi
online di CodeConverter
Codice sorgente - presumibilmente C# / VB.NET |
//Creo l'enumeratore e ottengo un cast su tutti i controlli del form
IEnumerable<Control> controls = this.Controls.Cast<Control>();
//Fase 1: Inverto l'ordine
controls = controls.Reverse();
//Fase 2: Seleziono e raggruppo tutti gli elementi che sono le TextBox ordinandole
List<Control> c = controls.GroupBy(x => x.GetType() == typeof(TextBox)).Select(grp => grp.ToList()).FirstOrDefault().ToList();
//Semplice prova
MessageBox.Show(c[0].Name);
|
in questo modo ti risparmi la noia di fare tutto il ciclo per selezionare elemento x elemento
e verificarne il tipo.
|
|
cuore napoletano (Normal User)
Pro
Messaggi: 129
Iscritto: 03/02/2011
|
ciao, forse anche tu di Napoli?
Grazie per la tua risposta.Ho notato che creando controlli a volo viene rispettato l'ordine di inserimento
e quindi farò cosi.
Grazie ancora hai un caffè pagato.... ciaooo
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
|
Si, precisamente di Aversa
Non avevo mi fatto caso che a ruintime l'enumerazione cambiasse.
Ovviamente si impara giorno dopo giorno.
Chiudo, Buon proseguimento.
|
|