Voyez la classe PrintDocument comme un job d'impression et non comme un document.
L'erreur classique de l'utilisation de cette classe, est de créer une classe qui dérive de PrintDocument, et de laisser cette classe la gestion du dessin de l'impression. Cette solution pose un problème dans le cas où vous souhaitez imprimer plusieurs document dans un job d'impression. Il n'est pas possible d'executer plusieurs PrintDocument dans le même job d'impression.
Le pattern conseillé pour l'utilisation de cette classe est le suivant :
- Créer autant de classe que de document (qui ne dérive pas de PrintDocument).
- Ajouter dans chacune de ces classes une méthode Impression(Graphics g). Cette méthode se contente d'imprimer le document sur l'objet Graphics passé en paramètre.
- Pour lancer l'impression, créer un objet PrintDocument, gérer l'événement PrintPage qui s'occupe d'appeler la méthode Impression(Graphics) de chacune de vos classes crées précédemment.
NOTE : En utilisant un tel pattern, vous rendez le dessin de vos documents sur n'importe quel objet Graphics. Vous pouvez donc très simplement dessiner vos documents dans une fenêtre, sur une ressource DC particulière de Windows, ...etc