2009-01-27 5 views
1

Je suis à la recherche de bonnes pratiques en matière d'impression à partir d'une application WinForms.Quelles sont les meilleures pratiques pour imprimer à partir d'une application WinForms?

  • Quels sont les pièges?
  • Quelles techniques de mise en page fonctionnent?
  • Serait-il plus facile d'utiliser WPF pour l'impression (MSDN WPF Printing Overview)?

Dans mon cas particulier, j'ai une application WinForms existante qui doit être étendue avec la fonctionnalité d'impression. Le programme ne doit pas simplement imprimer le contenu à l'écran, mais prendre certaines des données dans le formulaire et les mettre dans un modèle et l'imprimer.

Merci, Egil.

Répondre

3

De manière générale, il existe deux méthodes principales d'impression dans .NET. L'API d'impression d'origine qui implique un rappel sur une méthode de manière répétée et vous définissez les arguments correctement (HasMorePages) pour indiquer s'il y a plus de pages à imprimer. C'est à peu près tout ou rien d'utiliser cette API.

La seconde implique l'utilisation de WPF et contrairement à l'API précédente. Ils ont différents niveaux de complexité allant de l'utilisation d'une méthode d'impression visuelle sur les éléments d'un formulaire WPF au niveau de contrôle dans l'API d'impression normale.

La troisième alternative, en particulier pour WinForms, consiste à utiliser la bibliothèque de compatibilité d'imprimante du VB Power Pack 3.0 de here. Elle restaure la simplicité des anciennes méthodes de Visual Basic. En dépit qu'il se concentre sur Visual BASIC.NET, il peut être référencé à partir de n'importe quel langage .NET.

Une autre alternative est d'utiliser quelque chose comme Crystal Reports pour votre impression.

+0

Crystal Reports est livré avec Visual Studio et apprendre à utiliser cet outil donne une portabilité au niveau de compétences apprises. – David

1

Une option serait d'utiliser .net reportViewer contrôle et .rdlc rapports ...

+0

Alors que parfois un WTF seul, les rapports ReportViewer ont sauvé beaucoup de travail dans mon dernier projet, donc +1 pour cette réponse. – OregonGhost

Questions connexes