none
печать из DataGridView RRS feed

  • Вопрос

  • Всем привет. Написал приложение, которое работает с БД SQL.Набирал на Visaul Studio C#. Данные из БД загружаются в  DataGridView. А сейчас мне нужно напечатать эти данные. Как послать эти данные на печать?

    думал все это загрузить в richtextbox, а оттуда напечатать. 

    Есть какие а идеи?

    • Перемещено Abolmasov Dmitry 6 февраля 2012 г. 11:44 (От:Работа с данными)
    14 января 2012 г. 7:14

Ответы

  • > Данные из БД загружаются в DataGridView. А сейчас мне нужно напечатать эти данные. Как послать эти данные на печать?
     
     

    using System.Data;
    using System.Drawing;
    using System.Drawing.Printing;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication3
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                var dt = new DataTable();
                dt.Columns.Add("c1", typeof(int));
                dt.Columns.Add("c2", typeof(int));
                for(int i=0; i < 5; i++)
                    dt.Rows.Add(i, i);
    
                var dg = new DataGridView { Parent = this, Dock = DockStyle.Fill, DataSource = dt };
    
                this.Menu = new MainMenu();
                this.Menu.MenuItems.Add("Print", delegate 
                {
                    var pd = new PrintDocument();
                    pd.PrintPage += (s, e) =>
                        {
                            var bmp = new Bitmap(dg.Width, dg.Height);
                            dg.DrawToBitmap(bmp, dg.ClientRectangle);
                            e.Graphics.DrawImage(bmp, new Point(100, 100));
                        };
                    pd.Print();
                });
            }
        }
    }
    


    + см. The DataGridViewPrinter Class; Print the data of the datagridview in C#Printing a DataGridView
      
     

    • Помечено в качестве ответа Abolmasov Dmitry 16 января 2012 г. 7:01
    14 января 2012 г. 14:55
  • Malobukv,

    Качество печати при таком методе будет просто ужасным.

    Frech87,

    Почему бы вам не использовать построители отчетов (типа Cristal Report, или хотя бы эксел) ?  Или другой вариант - экспорт в html, и печать через веббраузер. А грид не предназначен для печати...

    • Помечено в качестве ответа Abolmasov Dmitry 16 января 2012 г. 7:01
    14 января 2012 г. 18:33
    Отвечающий

Все ответы

  • > Данные из БД загружаются в DataGridView. А сейчас мне нужно напечатать эти данные. Как послать эти данные на печать?
     
     

    using System.Data;
    using System.Drawing;
    using System.Drawing.Printing;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication3
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                var dt = new DataTable();
                dt.Columns.Add("c1", typeof(int));
                dt.Columns.Add("c2", typeof(int));
                for(int i=0; i < 5; i++)
                    dt.Rows.Add(i, i);
    
                var dg = new DataGridView { Parent = this, Dock = DockStyle.Fill, DataSource = dt };
    
                this.Menu = new MainMenu();
                this.Menu.MenuItems.Add("Print", delegate 
                {
                    var pd = new PrintDocument();
                    pd.PrintPage += (s, e) =>
                        {
                            var bmp = new Bitmap(dg.Width, dg.Height);
                            dg.DrawToBitmap(bmp, dg.ClientRectangle);
                            e.Graphics.DrawImage(bmp, new Point(100, 100));
                        };
                    pd.Print();
                });
            }
        }
    }
    


    + см. The DataGridViewPrinter Class; Print the data of the datagridview in C#Printing a DataGridView
      
     

    • Помечено в качестве ответа Abolmasov Dmitry 16 января 2012 г. 7:01
    14 января 2012 г. 14:55
  • Malobukv,

    Качество печати при таком методе будет просто ужасным.

    Frech87,

    Почему бы вам не использовать построители отчетов (типа Cristal Report, или хотя бы эксел) ?  Или другой вариант - экспорт в html, и печать через веббраузер. А грид не предназначен для печати...

    • Помечено в качестве ответа Abolmasov Dmitry 16 января 2012 г. 7:01
    14 января 2012 г. 18:33
    Отвечающий
  • @Algol361

    > Качество печати при таком методе будет просто ужасным.


    вывод в bitmap и последующий вывод на печать - это только для примера.
    в обработчике PrintPage надо использовать методы e.Graphics.
    примеры можно найти по ссылкам; см. выше под кодом.
     
     
    14 января 2012 г. 19:05
  • Однозначно использовать e.Graphics:

    e.Graphics.FillRectangle, e.Graphics.DrawRectangle, e.Graphics.DrawString с регионами #region Cols

    17 марта 2015 г. 13:15