47 messaggi dal 01 novembre 2012
Buonasera,

in DGV, ci sono 3 colonne di cui l'ultima sono visualizzati dei numeri.

Se i numeri della colonna sono minore o uguali a 5 devono essere visualizzati in una ListBox le righe corrispondenti.

(Per es: Tigre | Leone | 4)

Con il seguente codice, quando i record sono pochi il funzionamento è perfetto viceversa quando sono molti oltre i 50 record viene visualizzato solo l'ultima cella della colonna numerica del DGV.
[codestring Valore = "";

for (int i = 0; i < DataGridView.RowCount; ++i)
{
Valore = (string)DataGridView.Rows[i].Cells[3].Value;
if (Convert.ToInt32(Valore) <= 5)
{
ListBox.Items.Add(DataGridView.Rows[i].Cells[1].Value + " | " + DataGridView.Rows[i].Cells[2].Value +
" | " + DataGridView.Rows[i].Cells[3].Value + Environment.NewLine);
}
}]

Gradirei gentilmente sapere se si può migliorare o modificare il codice.

Anticipatamente ringrazio, fiducioso di un gradito suggerimento, saluto.
Domenico.
Ciao!
ho fatto delle prove con il codice che hai scritto e non riesco a riprodurre il problema.
puoi postare il codice intero dove richiami quel pezzo di codice?
grazie
47 messaggi dal 01 novembre 2012
Gent.mo Maurizio,

mi scuso del notevole ritardo e ringrazio della gradita disponibilità.

Invio il Link dove potrai prelevare il file rifatto solo la parte interessata al problema.

Non presenta nessun problema quando i Record sono pochi viceversa si presenta quando superano 50 Record.

Ho inserito al file due condizioni la prima è manuale che cliccando sul pulsante "Aggiorna", si aggiorna la data corrente alla colonna (2) del DGV e visualizza una ListBox con le voci <= 5.

La seconda è quella che uso maggiormente è in automatico e bisogna ripristinare la voce "Aggiorna" alla riga "106" del programma è che aprendo il file automaticamente si aggiorna la data e visiona la ListBox con le relative voci.

Auguro di essere stato chiaro e fiducioso, saluto.
Domenico.


https://www.mediafire.com/file/561twmb6i4syaao/Prova+Condizione.rar/file
Ciao!
ho fatto una prova con il tuo codice e non sono riuscito a replicare il problema!
Ho aggiunto circa 80 record (aggiungendo dati al database xml) e il listview si comporta correttamente.
Puoi fare una prova inserendo in una label il numero di righe che soddisfano la condizione e vedere se in quel caso anche quando ti visualizza l'ultimo record ti conteggia comunque tutti quelli non visualizzati?
O invece di usare un listview usare un secondo datagridview dove caricare i dati che soddisfano la condizione?

Maurizio
47 messaggi dal 01 novembre 2012
Buongiorno Maurizio,

ringrazio della tempestività.

Tempo permettendo gradirei due cortesie e mi scuso se approfitto.

La prima se puoi postare il codice per l'inserimento della Label.
La seconda essendo circa 52 Record al momento, appare regolarmente al lato del DGV lo ScrollBar. Il cursore è di color grigio e non vi è tra la proprietà di inserire un colore al cursore. Ho cercato in rete se vi è la possibilità anche di costruire e non ho trovato nulla considerando che non conosco l'inglese.
Gradirei un suggerimento.

Ringrazio della gentilezza, ed auguro una buona giornata.
Domenico.
Ciao!
per l'inserimento in label, una volta aggiunta nel form, nel codice subito dopo la condizione che verifica che il contenuto della cella è minore di 5 puoi inserire il codice seguente:

if (Convert.ToInt32(Valore) <= 5)
 {
    ListBox.Items.Add(DataGridView.Rows[a].Cells[1].Value.ToString() + " | " + DataGridView.Rows[a].Cells[3].Value.ToString() + Environment.NewLine);
   lblTotale.Text = ListBox.Items.Count.ToString();
 }


Nell'esempio sopra ho chiamato la label LBLTOTALE.
Mettendo nella label il valore del numero di record della listbox può aiutarti a capire se è un problema solo grafico (che la listbox no nvisualizza tutti gli elementi ma in realtà ci sono) oppure se c'è qualche problema a livello della condizione per cui anche il numero totale di elementi presenti non corrisponde con quanti dovrebbero essere.

Per quanto riguarda lo scrollbar, modificarlo su winform non mi è mai capitato di averne la necessità.
Cercando su internet mi è parso di capire che non è customizzabile e l'unica è implementarlo da zero.. vedi link:

https://www.codeproject.com/Articles/14801/How-to-skin-scrollbars-for-Panels-in-C

Maurizio