Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
A New York HP ha messo al centro della scena HP IQ, la piattaforma di IA locale da 20 miliardi di parametri. L’abbiamo vista in funzione: è uno strumento che funziona, pensato per un target specifico, con vantaggi reali e limiti altrettanto evidenti
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
La PNY GeForce RTX 5080 Slim OC si distingue nel panorama delle GPU di fascia alta per il design compatto a due slot, ispirato alla NVIDIA GeForce RTX 5080 Founders Edition. In questo test analizziamo comportamento termico e prestazioni in gioco, valutando se il formato ridotto comprometta o meno l'esperienza complessiva rispetto alle soluzioni più ingombranti presenti sul mercato.
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
HUAWEI WiFi Mesh X3 Pro Suite è probabilmente il router mesh più fotogenico che si possa acquistare oggi in Italia, ma dietro il guscio in acrilico trasparente e le luci LED dinamiche c'è una macchina tecnica costruita attorno allo standard Wi-Fi 7, con velocità teoriche Dual-Band fino a 3,6 Gbps e una copertura fino a 120 m² una volta abbinato il router principale all'extender incluso nel kit
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-11-2008, 16:41   #1
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
[C#]popolamento controlli visuali

Ciao a tutti

Ho questo piccolo problema:

ho un oggetto combobox che ha un'origine dati.

Supposto di avere una tabella: table(id, descrizione)

non ho problemi a popolare il combo con tutti i valori contenuti nel campo
descrizione.

Quello che invece non riesco a capire è come popolare un altro elemento sulla base del valore contenuto nel combo;

per esempio, se volessi una casella di testo che mi contiene l'id relativo al valore 'descrizione', dovrei fare un'altra select e popolare poi la casella di testo.

Questo ragionamento ha però secondo me un difetto di base:

se ho due valori nel campo 'descrizione' uguali, non ha senso fare una select
perchè non sarei certo di aver scelto la 'descrizione' giusta.

Per essere più chiaro:

Codice:
tabellaProva:

id - - descrizione
1  - - verde
2  - - rosso
3  - - verde
ora popolo la combobox ed avrò quindi:

Codice:
verde
rosso
verde
come faccio a ricavare senza ambiguità il valore di 'id' da mettere in un altro controllo ?

Grazie mille

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2008, 17:15   #2
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Vedi un po' se ti aiuta

Codice:
namespace ComboStudy
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            PopCombo();
        }       

        public void PopCombo()
        {
            comboBox1.Items.Clear();
            comboBox1.Items.Add(new BusinessObject(10, "Verde"));
            comboBox1.Items.Add(new BusinessObject(20, "Rosso"));
            comboBox1.Items.Add(new BusinessObject(30, "Verde"));
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            BusinessObject bo = comboBox1.SelectedItem as BusinessObject;
            if (bo != null)
            {
                string str=string.Format("Indice {0} - ID {1}, STR {2}",comboBox1.SelectedIndex,bo.ID,bo.str);
                MessageBox.Show(str);
            }
        }
    }

    public class BusinessObject
    {
        public int ID;
        public string str;

        public BusinessObject(int p_id, string p_str)
        {
            ID = p_id;
            str = p_str;
        }

        public override string ToString()
        {
            return str;
        }
    }
}
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2008, 17:16   #3
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Ho fatto un piccolo passo avanti mediante l'uso di un dizionario e aggiungendo un altro combobox al posto della textbox:

Codice:
//ottengo i dati dalla select, li carico nel dizionario e poi nel form:

foreach(KeyValuePair<int, string> k in classeProva.GetDizionario())
{
     comboKey.Items.Add(k.Key);
     comboColore.Items.Add(k.Value.ToString());
}

Benone, ora ho tutti i dati che mi servono ma....
devo capire ancora questo:

se scelgo un colore diverso in comboColore, mi deve variare anche il corrispondente in comboKey.

RaouL.

Piccolo Edit:

Non avevo visto ancora il tuo suggerimento
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek

Ultima modifica di RaouL_BennetH : 25-11-2008 alle 17:19.
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2008, 17:30   #4
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Ho risolto in modo credo non proprio brillante:

Mi sono detto, dato che quando popolo le combo con i valori del dizionario, gli index sono allineati, quindi, se cambio l'index sul primo combo, posso prenderne la posizione ed assegnare la stessa sul secondo combo.

Cioè:

Codice:
private void comboColore_SelectedIndexChanged(object sender, EventArgs e)
{
    comboKey.SelectedIndex = comboColore.SelectedIndex;
}
.... non picchiatemi ....

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2008, 17:55   #5
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Allora non ho capito.
Comunque la soluzione e' (quasi) sempre popolare la combo direttamente con gli oggetti che si vogliono rappresentare, non con solo la loro rappresentazione (che appunto e' senza chiave)
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2008, 18:15   #6
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Allora non ho capito.
Comunque la soluzione e' (quasi) sempre popolare la combo direttamente con gli oggetti che si vogliono rappresentare, non con solo la loro rappresentazione (che appunto e' senza chiave)


Scusami gugoXX, non credo di aver capito bene; in sostanza dici che non è molto corretto popolare solo con i "records" ottenuti dall'origine dati ?

Grazie mille

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2008, 18:20   #7
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
No, anzi, l'opposto.
E' opportuno popolare le combo (e altri controlli) proprio con i record ottenuti dal database, e non solo una descrizione.

Dove ciascun record avra' chiave, descrizione e tutto il resto.
In questo modo quando selezionerai l'elemento saprai tutto di esso, descrizione e chiave compresi.
Sulla base della chiave quindi potrai agire su altri elementi, lanciare altre query, etc.
Prima avevo postato un esempio, forse l'avevi perso.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2008, 18:26   #8
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
No, anzi, l'opposto.
E' opportuno popolare le combo (e altri controlli) proprio con i record ottenuti dal database, e non solo una descrizione.

Dove ciascun record avra' chiave, descrizione e tutto il resto.
In questo modo quando selezionerai l'elemento saprai tutto di esso, descrizione e chiave compresi.
Sulla base della chiave quindi potrai agire su altri elementi, lanciare altre query, etc.
Prima avevo postato un esempio, forse l'avevi perso.
Ah ok

Eh si, ho messo un edit perchè l'ho notato solo dopo
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2008, 19:46   #9
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
No, anzi, l'opposto.
E' opportuno popolare le combo (e altri controlli) proprio con i record ottenuti dal database, e non solo una descrizione.

Dove ciascun record avra' chiave, descrizione e tutto il resto.
In questo modo quando selezionerai l'elemento saprai tutto di esso, descrizione e chiave compresi.
Sulla base della chiave quindi potrai agire su altri elementi, lanciare altre query, etc.
Prima avevo postato un esempio, forse l'avevi perso.
Ohé Gugo,

una domanda:

con la API è possibile associare un puntatore a ogni voce di una listbox(o combobox) tramite le funzioni GetItemDataPtr/SetItemDataPtr.
Il puntatore può puntare a dati semplici, come int, o a dati più complessi, come una struct.
Non esiste, in C#, qualcosa di simile?

Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2008, 19:56   #10
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Certo.
Se vedi nel mio esempio, la combobox ha una proprieta'
Items
che sono gli oggetti contenuti nella combobox.
La combobox mostrera' il risultato della ToString() di ciascuno di questi elementi.
Ma ogni elemento puo' essere del tipo che si vuole.
Tutti gli oggetti hanno un-implementazione di base della ToString(), anche se e' bene effettuarne l'override, proprio per permettere il popolamento con una stringa custom.

Items implementa l'interfaccia IEnumerable, e come tale la si puo' trattare, con Add, Remove, foreach, Clear, etc.

Quindi, quando si aggiunge un'istanza di una classe (che e' per riferimento in C), di fatto si aggiunge solo il puntatore ad Items.
Quandi si aggiunge invece una struttura o un tipo Value base, di fatto si aggiunge una nuova copia ad Items. Sotto la coperta viene creato al volo un oggetto il cui puntatore viene aggiunto ad Items. (A differenza del C++ pero' la distruzione di quest'oggetto creato al volo verra' demandata al Garbage Collecor, una volta che l'oggetto verra' scodato da Items)
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 25-11-2008 alle 19:59.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2008, 20:11   #11
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Grazie mille

Approfitto per precisare che ricordavo male. La funzioni di cui parlavo sono implementate su MFC. Per la API bisogna utilizzare i messaggi CB_GETITEMDATA/CB_SETITEMDATA o le macro ComboBox_GetItemData/ComboBox_SetItemData.

Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è PNY RTX 5080 Slim OC, sembra una Founders Editio...
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte Core Ultra 7 270K Plus e Core Ultra 7 250K Plus:...
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu PC Specialist Lafité 14 AI AMD: assemblat...
Il dodicesimo lancio del razzo spaziale ...
Blue Origin sta assemblando il secondo l...
Meta moltiplica gli investimenti in data...
Addio riflessi fastidiosi? Samsung prese...
PlayStation 5, doccia fredda da Sony: i ...
Super Meat Boy 3D: annunciata la data d'...
XT View Matrix, il mid-tower Phanteks ch...
David Sacks lascia il ruolo di 'Crypto C...
LG All Stars 2026: quando l'installatore...
Addio ad Anna's Archive? Ecco la mossa l...
Addio al Mac Pro, Apple mette fine a un ...
Panasonic a MCE 2026: la rivoluzione sil...
Netflix alza la posta: il piano Premium ...
Nimbus Innovation Awards – Cloud Edition...
Wikipedia vieta i contenuti generati dal...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:10.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v