Ciao, si lo sò di solito è il contrario, ma vorrei capire perchè questo codice mi funziona così bene:
Praticamente inserisco un item in un controllo listview, e prima di inserire questa item, controllo se è presente o meno un item particolare con una specifica descrizione: "MANO D'OPERA"
ora se questa particolare item esiste, ne devo recuperare la posizione per inserire l'item che stò aggiungendo appena prima di questa particolare item. Il codice funziona ma non capisco perchè mi inserisce la nuova item prima di quella particolare item.. cioè come regola dovrebbe inserirmela dopo.. invece la inserisce prima.. ripeto a me interessa che la inserisca prima quindi mi và bene così com'è il codice.. però volevo togliermi questo dubbio 
codice:
int j=0;
while(j<ListArticoli.Items.Count)
{
//se l'item mano d'opera esiste..
if(ListArticoli.Items[j].Text=="MANO D'OPERA")
{
//inserisco il record appena prima della mano d'opera
ListViewItem newItem3=ListArticoli.Items.Insert(j,descrizione.ToString());
newItem3.UseItemStyleForSubItems=false;
newItem3.SubItems.Add(qta.ToString());
newItem3.SubItems.Add(prezzoU,Color.Black,Color.FromArgb(235,235,235),Font);
newItem3.SubItems.Add(importo);
decimal totale=0;
int i=0;
//controllo tutti gli item presenti nella lista meno 1 (l'item da aggiornare cioè il totale)
while(i<ListArticoli.Items.Count-1)
{
//addiziono gli item ciclati
totale += Convert.ToDecimal(ListArticoli.Items[i].SubItems[3].Text);
i++;
}
System.Globalization.CultureInfo it = new System.Globalization.CultureInfo ("it-IT");
decimal newMoneyTOT=Convert.ToDecimal(0.0) ;
newMoneyTOT=Convert.ToDecimal(totale,it);
//aggiorno il totale
ListArticoli.Items[i].SubItems[3].Text=newMoneyTOT.ToString("c",it);
//esco dal metodo per non proseguire anche con l'inserimento normale
return;
}
j++;
}