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
MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril SHAREPOINT 15 TECHNICAL PREVIEW MANAGED OBJECT MODEL SOFTWARE DEVELOPMENT KITSHAREPOINT 15 TECHNICAL PREVIEW MANAGED OBJECT MODEL SOFTWARE DEVELOPMENT KIT par Matthew
http://www.microsoft.com/download/en/details.aspx?id=28768&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+MicrosoftDownloadCenter+(Microsoft+Download+Center) ...
Cliquez pour lire la suite de l'article par Matthew
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|