Accueil > > > PRINTPREVIEW PERSONNALISÉ
PRINTPREVIEW PERSONNALISÉ
Information sur la source
Description
L'origine de cette source vient du fait que je n'arrivais pas à faire apparaitre un PrintDialog après avoir instancié un PrintPreviewDialog au moment où je cliquais sur l'icône d'impression. Au grès de mes recherches sur le web, je suis arrivé sur cette source [http://www.codeproject.com/cs/miscctrl/SUPrintPre viewDialog.asp] dont je me suis inspiré pour comprendre mon problème et réaliser cette source. J'ai ajouté aussi la gestion du MouseWheel pour faire défiler les pages.
Source
using System;
using System.Reflection;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
namespace PrintPreview
{
/// <summary>
/// Gestion de la barre d'icônes internes au PrintPreviewDialog
/// Source inspirée de : http://www.codeproject.com/cs/miscctrl/SUPrintPreviewDialog.asp
/// </summary>
public class PrintPreview : System.Windows.Forms.PrintPreviewDialog
{
private ToolStripButton btnPrint;
private NumericUpDown nudPageCounter;
/// <summary>
/// Constructeur permettant de gérer sa barre d'icônes
/// </summary>
public PrintPreview() : base()
{
// Récupération du type PrintPreviewDialog pour pouvoir utiliser System.Reflection
Type t = typeof(PrintPreviewDialog);
// Récupération des informations sur la barre d'icônes
FieldInfo fi = t.GetField("toolStrip1", BindingFlags.Instance | BindingFlags.NonPublic);
ToolStrip toolStrip = (ToolStrip)fi.GetValue(this);
#region Impression
// Récupération du bouton d'impression
ToolStripButton printButton = (ToolStripButton)toolStrip.Items[0];
// "Suppresion" de ce bouton
printButton.Visible = false;
// Création et ajout du nouveau bouton d'impression
btnPrint = new ToolStripButton();
btnPrint.ToolTipText = printButton.ToolTipText;
btnPrint.ImageIndex = 0;
toolStrip.Items.Insert(0, btnPrint);
// Ajout de la gestion personnalisée du clic sur le nouveau bouton
((ToolStripButton)toolStrip.Items[0]).Click += new EventHandler(PrintPreview_Click);
#endregion
#region Défilement des pages
// Récupération du NumericUpDown pour ajouter la gestion du MouseWheel
fi = t.GetField("pageCounter", BindingFlags.Instance | BindingFlags.NonPublic);
nudPageCounter = (NumericUpDown)fi.GetValue(this);
// Ajout de la gestion personnalisée du MouseWheel
this.MouseWheel += new MouseEventHandler(PrintPreview_MouseWheel);
#endregion
}
/// <summary>
/// Gestion du MouseWheel pour faire défiler les pages
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void PrintPreview_MouseWheel(object sender, MouseEventArgs e)
{
try
{
if (e.Delta < 0)
{
nudPageCounter.Value++;
}
else
{
nudPageCounter.Value--;
}
}
catch { }
}
/// <summary>
/// Gestion du clic sur l'icône d'impression pour faire apparaitre une boite de dialogue pour les paramètres d'impression
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void PrintPreview_Click(object sender, EventArgs e)
{
// Instanciation du PrintDialog pour les préférences d'impression
PrintDialog printDialog = new PrintDialog();
printDialog.AllowCurrentPage = true;
printDialog.AllowSelection = true;
printDialog.AllowSomePages = true;
printDialog.ShowNetwork = true;
// Lancement de l'impression si validée par l'utilisateur
if (printDialog.ShowDialog() == DialogResult.OK)
{
this.Document.PrinterSettings = printDialog.PrinterSettings;
this.Document.Print();
}
}
private void InitializeComponent()
{
this.SuspendLayout();
this.ClientSize = new System.Drawing.Size(582, 406);
this.Name = "PrintPreview";
this.ResumeLayout(false);
}
}
}
Conclusion
J'espère que cette source sera utile pour d'autres personnes en tout cas elle m'aura permis de comprendre quelques notions sur le System.Reflection.
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
printpreviewdialog (urgent)!!!!! [ par stiley1 ]
salut je veux faire l'aperçu avt impression d'1 doc.mais à l'affichage de la fenêtre je reçois une page noirci(ou vierge?)comment dois-je m'y prendre.
c#, printpreviewdialog [ par stiley1 ]
slut je n'arrive pas afficher mon aperçu avt impression.la fenêtre apparaît avec une page noircie(vierge?)je me demande comment je dois m'y prendre.ca
[c#]printpreviewdialog [ par stiley1 ]
slut j'arrive à afficher l'aperçu mais je possède un bouton suivant . Donc une fois ke je ferme la fenêtre d'aperçu et ke je fais suivant je n'arrive
Coment definir la mise en page d'un PrintDocument sans passer par un dialog [ par apacheswiss ]
Hello....J'aurrais voulus savoir comment definir la mise en page d'un PrintDocument sans passer par un PageSetuoDialog...surtout pour definir que c'es
PrintDocument et Excel [ par Sickfrid ]
Salut tlm,je cherche à imprimer un fichier Excel en recto Verso, pas question de faire 1 pages sur 2 et de remettre le paquet dans l autrre sens apres
Reflection [ par MorpionMx ]
Bonsoir a tous Voila, j'ai une dll qui implémente plusieurs méthodes static qui effectuent un traitement sur une image passée en param
System.Reflection? [ par Olympe18 ]
Bonjour,Je suis encore un débutant en C# et je fais face à un petit problème. La solution est sans doute simple, mais pour l'instant, j
Type, string et reflection [ par bigflo93 ]
Salut à tous :)Je suis en pleine reflection en ce moment :) et je cherche à instancier une classe à partir d'une string.Enfin, pl
Reflection DLL [ par RM50Man ]
Voila le code ou j utilise la reflection pour appeler une méthode static dans ma DLL Assembly asm = Assembly.LoadFrom("PremiereDLL.dll"); Type[]
DLL reflection [ par RM50Man ]
Pour utiliser une dll est ce qu on est toujours d utiliser la reflection!!!!RM50man
|
Derniers Blogs
TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|