none
wpf imprimer le sitems d'un listbox

    Question

  • bonsoir

    ouf j'arrive à la fin de mon développement reste un dernier soucis comment imprimer les items d'un listebox en wpf/c# je suis sur vb2015

    un grand merci pour votre aide

    lundi 20 février 2017 22:40

Réponses

  • Bonjour Simon,

    Je te communique une solution qui gère le problème d'impression. J'ai pris un exemple de listbox que j'initialise par programmation. Pour le reste le programme permet de sauvegarder le contenu de la listbox sur le bureau (question précédente) et le deuxième bouton d'imprimer le contenu de la listbox sur l'imprimante par défaut.

    using System;
    using System.Drawing;
    using System.Drawing.Printing;
    using System.IO;
    using System.Windows;
    using System.Windows.Documents;
    
    namespace WpfApplication1
    {
        /// <summary>
        /// Logique d'interaction pour MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            StreamWriter sw = null;
            string chemin_fichier = @"C:\Users\bourges\Desktop\Cagnote.txt";
            public MainWindow()
            {
                InitializeComponent();
                produits_Load();
            }
    
            private void produits_Load()
            {
                string[ ] produit = new string[4];
    
                produit[0] = "produit_1";
                produit[1] = "produit_2";
                produit[2] = "produit_3";
                produit[3] = "produit_4";
    
                for (int i=0;i< produit.Length;i++)
                    produits.Items.Add(produit[i]);
            }
            private void sauver_Click(object sender, RoutedEventArgs e)
            {
                try
                {
                    string chemin_fichier = @"C:\Users\bourges\Desktop\Cagnote.txt";
                    sw = new StreamWriter(chemin_fichier);
                    foreach (string items in produits.Items)
                    {
                        sw.WriteLine(items);
                    }
                    sw.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Exception: ", ex.Message);
                }
                finally
                {
                    MessageBox.Show("Evenements sauvegardés");
                }
            }
    
            private Font policeImpression;
    
            private void imprimer_Click(object sender, RoutedEventArgs e)
            {
                imprime(produits.Items.ToString());
            }
    
            private void imprime(string List)
            {
                try
                {
                    StreamReader streamToPrint = new StreamReader(chemin_fichier);
                    try
                    {
                        policeImpression = new Font("Arial", 10);
                        FlowDocument fd = new FlowDocument();
                        PrintDocument pd = new PrintDocument();
                        pd.PrintPage += new PrintPageEventHandler
                            (this.pd_PrintPage);
                        pd.Print();
                    }
                    finally
                    {
                        streamToPrint.Close();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    
            // l'événement PrintPage est généré par chaque page devant être imprimée.
            private void pd_PrintPage(object sender, PrintPageEventArgs ev)
            {
                StreamReader streamToPrint = new StreamReader(chemin_fichier);
                float lignesParPage = 0;
                float yPos = 0;
                int compteur = 0;
                float MargeGauche = ev.MarginBounds.Left;
                float MargeHaute = ev.MarginBounds.Top;
                string ligne = null;
    
                // Calcule le nombre de ligne pmar page
                lignesParPage = ev.MarginBounds.Height /
                   policeImpression.GetHeight(ev.Graphics);
    
                // imprime chaque ligne de la page
                while (compteur < lignesParPage &&
                   ((ligne = streamToPrint.ReadLine()) != null))
                {
                    yPos = MargeHaute + (compteur *
                       policeImpression.GetHeight(ev.Graphics));
                    ev.Graphics.DrawString(ligne, policeImpression, Brushes.Black,
                       MargeGauche, yPos, new StringFormat());
                    compteur++;
                }
    
                // s'il y a plus de ligne, imprime une autre page
                if (ligne != null)
                    ev.HasMorePages = true;
                else
                    ev.HasMorePages = false;
            }
    
        }
    
    }
    

    Merci de me tenir au courant si cela correspond bien à ton besoin et de voter en conséquence.

    Bonne soirée

    Patrick

    • Marqué comme réponse SIMONGEORGES lundi 27 février 2017 13:59
    samedi 25 février 2017 23:37

Toutes les réponses

  • Bonjour,
    Vous pouvez imprimer en utilisant PrintDialog et PrintDocument. Voici deux exemples:
    Wpf how to print ListBox
    Print from a listbox using C#

    Cordialement,
    Nina

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 21 février 2017 15:03
    Modérateur
  • bonjour

    merci de votre reponse

    mais je n'y arrive pas aidez moi merci

    mercredi 22 février 2017 11:15
  • Bonjour,

    Pouvez vous nous donner quelques éléments de votre code ou de vos tentatives afin de voir où se situe votre problème.

    Comment fonctionne votre listbox et comment est-elle renseignée.

    Merci pour votre réponse

    Patrick

    mercredi 22 février 2017 17:00
  • bonjour

    ma listbox est renseigne par code dynamique et un fois remplie je voudrais l'imprimer  voila tout simplement je suis sur WPF avec vb2015

    3

    jeudi 23 février 2017 09:56
  • Bonjour Simon,

    Je te communique une solution qui gère le problème d'impression. J'ai pris un exemple de listbox que j'initialise par programmation. Pour le reste le programme permet de sauvegarder le contenu de la listbox sur le bureau (question précédente) et le deuxième bouton d'imprimer le contenu de la listbox sur l'imprimante par défaut.

    using System;
    using System.Drawing;
    using System.Drawing.Printing;
    using System.IO;
    using System.Windows;
    using System.Windows.Documents;
    
    namespace WpfApplication1
    {
        /// <summary>
        /// Logique d'interaction pour MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            StreamWriter sw = null;
            string chemin_fichier = @"C:\Users\bourges\Desktop\Cagnote.txt";
            public MainWindow()
            {
                InitializeComponent();
                produits_Load();
            }
    
            private void produits_Load()
            {
                string[ ] produit = new string[4];
    
                produit[0] = "produit_1";
                produit[1] = "produit_2";
                produit[2] = "produit_3";
                produit[3] = "produit_4";
    
                for (int i=0;i< produit.Length;i++)
                    produits.Items.Add(produit[i]);
            }
            private void sauver_Click(object sender, RoutedEventArgs e)
            {
                try
                {
                    string chemin_fichier = @"C:\Users\bourges\Desktop\Cagnote.txt";
                    sw = new StreamWriter(chemin_fichier);
                    foreach (string items in produits.Items)
                    {
                        sw.WriteLine(items);
                    }
                    sw.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Exception: ", ex.Message);
                }
                finally
                {
                    MessageBox.Show("Evenements sauvegardés");
                }
            }
    
            private Font policeImpression;
    
            private void imprimer_Click(object sender, RoutedEventArgs e)
            {
                imprime(produits.Items.ToString());
            }
    
            private void imprime(string List)
            {
                try
                {
                    StreamReader streamToPrint = new StreamReader(chemin_fichier);
                    try
                    {
                        policeImpression = new Font("Arial", 10);
                        FlowDocument fd = new FlowDocument();
                        PrintDocument pd = new PrintDocument();
                        pd.PrintPage += new PrintPageEventHandler
                            (this.pd_PrintPage);
                        pd.Print();
                    }
                    finally
                    {
                        streamToPrint.Close();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    
            // l'événement PrintPage est généré par chaque page devant être imprimée.
            private void pd_PrintPage(object sender, PrintPageEventArgs ev)
            {
                StreamReader streamToPrint = new StreamReader(chemin_fichier);
                float lignesParPage = 0;
                float yPos = 0;
                int compteur = 0;
                float MargeGauche = ev.MarginBounds.Left;
                float MargeHaute = ev.MarginBounds.Top;
                string ligne = null;
    
                // Calcule le nombre de ligne pmar page
                lignesParPage = ev.MarginBounds.Height /
                   policeImpression.GetHeight(ev.Graphics);
    
                // imprime chaque ligne de la page
                while (compteur < lignesParPage &&
                   ((ligne = streamToPrint.ReadLine()) != null))
                {
                    yPos = MargeHaute + (compteur *
                       policeImpression.GetHeight(ev.Graphics));
                    ev.Graphics.DrawString(ligne, policeImpression, Brushes.Black,
                       MargeGauche, yPos, new StringFormat());
                    compteur++;
                }
    
                // s'il y a plus de ligne, imprime une autre page
                if (ligne != null)
                    ev.HasMorePages = true;
                else
                    ev.HasMorePages = false;
            }
    
        }
    
    }
    

    Merci de me tenir au courant si cela correspond bien à ton besoin et de voter en conséquence.

    Bonne soirée

    Patrick

    • Marqué comme réponse SIMONGEORGES lundi 27 février 2017 13:59
    samedi 25 février 2017 23:37