Grazie per l'attenzione ALKA , ci provo . Non so bene cosa indicare .
int wA4 = 827;
int hA4 = 1169;
FA4 = new Bitmap(wA4 * 2, hA4 * 3);
g = Graphics.FromImage(FA4);
pd = new PrintDocument();
ppd = new PrintPreviewDialog();
printDlg = new PrintDialog();
setupDlg = new PageSetupDialog();
openDlg = new OpenFileDialog();
saveDlg = new SaveFileDialog();
pd.PrintPage += new PrintPageEventHandler(Pd_PrintPage) { // ciclo di stampa di 1 foglio A4 alla volta
List<PaperSize> pkSize = pd.PrinterSettings.PaperSizes.Cast<PaperSize>().ToList();
PaperSize sizeA4 = pkSize.First(size => size.Kind == PaperKind.A4);
pd.DefaultPageSettings.PaperSize = sizeA4;
Bitmap paginaInStampa = FA4.Clone(new Rectangle(0, 0, wA4, hA4), FA4.PixelFormat);
e.Graphics.DrawImage(paginaInStampa, new Rectangle(0, 0, wA4, hA4));
} // contiene anche l'indicazione e.HasMorePages = true; o false;
if (printDlg.ShowDialog() != DialogResult.OK) return; // scelta della stampante : possibile fine
if (pd.PrinterSettings.PrinterName == "Microsoft Print to PDF")
saveDlg.InitialDirectory = openDlg.InitialDirectory = "C:\\PDF"; // cartella proposta
else saveDlg.InitialDirectory = "C:\\PNG";
pd.Print();
Ho semplificato al massimo il codice di tutte le istruzioni che palesemente non incidono sul problema.
Premesso che funziona tutto correttamente ad eccezione del fatto che entrando in pd.Print();
l' evento ( SOLO nel caso di stampa/salvataggio in PDF ) videa in automatico la richiesta di dove e con che nome salvare
E' qui che succede che SEMPRE propone la cartella ultima utilizzata in precedenza .
Viceversa quando salvo in formato .png l'istruzione :
if (saveDlg.ShowDialog() != DialogResult.OK) return; // dove salva
non viene lanciata in automatico dall'evento e funziona correttamente videando la cartella proposta :
saveDlg.InitialDirectory = "C:\\PNG";