Bonjour,

J'ai besoin dans un programme d'imprimer des pages en monochrome et d'autres en couleurs.

Toutes mes impressions fonctionnent correctement (changement d'orientation en fonction du type de pages etc), SAUF la commutation monochrome/couleur.

Par exemple, si je configure mon imprimante en couleurs, elle reste en couleurs, même si j'écris

Code : Sélectionner tout - Visualiser dans une fenêtre à part
printDoc.DefaultPageSettings.Color = false;
dans ma routine d'initialisation de l'impression, et ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
e.PageSettings.Color = false;
dans mon événement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
private void printDoc_QueryPageSettings(object sender, QueryPageSettingsEventArgs e)
et évidemment le contraire également : si l'imprimante est configurée en monochrome, impossible de repasser en couleurs.

Par contre, ce qui est complètement curieux, c'est que si, dans mon programme, via un printdialog, j'affecte la couleur on non, ça fonctionne, et c'est mémorisé durant la session du programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
            printDialogMDI.PrinterSettings = printer;                   // affecter l'imprimante en cours d'utilisation
                                                                        // (par référence, sera modifiée par le printdialog
            if (printDialogMDI.ShowDialog() == DialogResult.OK)         // boîte de dialogue de recherche d'imprimante
            {                                                           // si confirmation
                printer = printDialogMDI.PrinterSettings;               // sélectionner l'imprimante
                Prefs.PrinterName = printer.PrinterName;                // mémoriser son nom
                Prefs.Save();                                           // sauver les préférences
            }
Dans ma routine d'impression, j'affecte au printdocument l'imprimante "printer", et ça, ça fonctionne, les choix sont respectés/

Bref, lorsque je réouvre le printdialog, il m'indique bien mon dernier choix (couleur ou gris). L'information est donc bien mémorisée quelque part, mais je ne trouve pas où (le printer.DefaultPageSettings.color reste toujours à la valeur de l'imprimante par défaut et ne change pas en fonction de ce qu'on choisit dans le printdialog).

Dit autrement : si je change via le printdialog, ça fonctionne, mais le printersettings me renvoie toujours la valeur par défaut de cette imprimante, et ça ne fonctionne que durant la session en cours.

Par contre, impossible de changer le mode couleur/gris sans passer par le dit printdialog, et donc impossible d'imprimer une page en couleur et une autre en gris.

Dans le msdn et tous les exemples trouvés, on indique que la propriété "color" suffit à changer le mode, mais ça ne fonctionne pas (imprimante laser couleur Samsung CLP-300N).

Quelqu'un a une idée?

Merci d'avance, parce que ça me coince.

Claude