View Full Version : [VB.NET]Controlli a runtime in base a dati
RaouL_BennetH
15-06-2008, 13:14
riekkime....
classico problema:
1) Ho un form
2) Ho una tabella che contiene due campi che mi interessano, diciamo:
"ESAME", "VOTO"
3) Dovrei fare in modo che il form, mi aggiunga dinamicamente dei groupbox, ciascuno avente come titolo "ESAME" e ordinati in base al "VOTO"
Per esempio:
ESAME: ITALIANO
VOTO: 8
ESAME: MATEMATICA
VOTO: 3 ( :muro: ) :D
Il form dovrebbe aggiungermi i groupbox in questo modo:
MATEMATICA
ITALIANO
Grazie mille :)
RaouL.
^TiGeRShArK^
15-06-2008, 15:29
In VB non ci mi ci metto proprio a scriverlo perchè non mi ricordo una mazza..
comunque in C# si fa banalmente così:
Dictionary<string, int> examTable = new Dictionary<string, int>() {
{"LATINO", 6},
{"ITALIANO", 8},
{"MATEMATICA", 3}
};
foreach (var e in examTable.OrderBy(e => e.Value))
{
GroupBox box = new GroupBox();
box.Text = e.Key;
flowLayoutPanel1.Controls.Add(box);
}
..sperando che stavolta puoi usare linq.. :fagiano:
altrimenti devi ordinarti la tabella implementando un comparator (o come cavolo si chiama) credo...
P.S. ..ovviamente prima va aggiunto il flowlayoutpanel o dal designer o manualmente...
RaouL_BennetH
15-06-2008, 15:44
In VB non ci mi ci metto proprio a scriverlo perchè non mi ricordo una mazza..
comunque in C# si fa banalmente così:
Dictionary<string, int> examTable = new Dictionary<string, int>() {
{"LATINO", 6},
{"ITALIANO", 8},
{"MATEMATICA", 3}
};
foreach (var e in examTable.OrderBy(e => e.Value))
{
GroupBox box = new GroupBox();
box.Text = e.Key;
flowLayoutPanel1.Controls.Add(box);
}
..sperando che stavolta puoi usare linq.. :fagiano:
altrimenti devi ordinarti la tabella implementando un comparator (o come cavolo si chiama) credo...
P.S. ..ovviamente prima va aggiunto il flowlayoutpanel o dal designer o manualmente...
No, niente LINQ purtroppo :(
Ad ogni modo, questo potrei farlo comunque non conoscendo a priori cosa è contenuto nella tabella esami?
Grazie mille :)
^TiGeRShArK^
15-06-2008, 16:13
No, niente LINQ purtroppo :(
Ad ogni modo, questo potrei farlo comunque non conoscendo a priori cosa è contenuto nella tabella esami?
Grazie mille :)
si, ma ovviamente devi sapere in quale posizione devi trovare i dati che ti servono :p
io ho usato un dictionary, dato che si trattava solo di due valori, ma il caso + generale sarebbe una List<String[]> o equivalente in cui quanto detto sopra non cambia.
..in pratica devi solo ordinare la tabella in modalità pre-linq e dovresti avere tutto :p
RaouL_BennetH
15-06-2008, 16:23
si, ma ovviamente devi sapere in quale posizione devi trovare i dati che ti servono :p
io ho usato un dictionary, dato che si trattava solo di due valori, ma il caso + generale sarebbe una List<String[]> o equivalente in cui quanto detto sopra non cambia.
..in pratica devi solo ordinare la tabella in modalità pre-linq e dovresti avere tutto :p
Grazie mille Tigershark :ave:
I tuoi suggerimenti mi sono sempre di aiuto!
RaouL.
RaouL_BennetH
20-06-2008, 13:30
eeecccooo.. che i primi problemi spuntano fuori...
Seguendo il tuo esempio, tutto funziona, se non fosse che l'inserimento di questi controlli avviene in delle tabpages, cioè, quando passo da un tab all'altro, mi carica correttamente quello che mi serve, ma quando poi dal tab selezionato in questo momento, torno di nuovo su uno che ho già aperto, ovviamente mi vengono riaggunti i controlli :mc:
Come potrei fare per limitare l'aggiunta solo una volta?
Grazie mille :)
RaouL.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.