Ciao e perdona il ritardo nella risposta, probabilmente avrai già risolto cmq ti rispondo lo stesso.
>Non posso usare la ricorsione per leggere i dati in quanto gli
>oggetti sono eterogenei.
perchè no? puoi fare una ricorsione con "object" o "IEnumerable" se passi liste come parametro e poi controllare il tipo e tirare fuori le proprietà che ti interessano.
Tipo:
void FunzioneRicorsiva(....,StringBuilder sb)
if(ele.GetType() == typeof(Commessa)
{
Commessa c = ele as Commessa;
sb.Append(c.PrezzoPattuito);
....
}
if(ele.GetType() == typeof(Cliente)
{
Cliente c = ele as Cliente;
sb.Append(c.RagioneSociale);
....
}
etc...
ho ipotizzato ti passi uno stringbuilder nella funzione ricorsiva per farti riempire una stringona lunga con tutto quello che deve stampare, ma era solo un esempio, quello che voglio dire è il fatto di fare i vari confronti sui tipi.
>Non credo di essermi spiegato molto bene (appena avrò un codice
>"comprensibile" lo posterò) ma è un pò come gestire le sezioni
>in Crystal Report ma in GDI+.
più che altro non so se ho capito bene, ma cmq sia credo che il problema sia la funzione Ricorsiva più che il fatto che usi PrintDocument...
Ciao.
Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo