Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывести на печать таблицу 
:(
    Опции темы
firefox
Дата 26.5.2011, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 4.5.2011

Репутация: нет
Всего: нет



Как можно вывести на печать таблицу DataGridView?
http://www.codeproject.com/KB/printing/dat...x?display=Print
Вот я нашел класс который сможет вывести DataGridView на печать DataGridViewPrinter Class.


Код

  DataGridViewPrinter data = new DataGridViewPrinter(dataGridViewGrafikPogashenna, printDocument1, true, true, "Кредити", Font.Italic, Color.Azure, true);
                        data.DrawDataGridView();

У меня не выходит вывести на печать DataGridView.

Это сообщение отредактировал(а) firefox - 26.5.2011, 12:53

Присоединённый файл ( Кол-во скачиваний: 27 )
Присоединённый файл  DataGridViewPrinter.cs 20,72 Kb
PM MAIL   Вверх
Yuretzzo
Дата 26.5.2011, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 12.1.2011
Где: Менск і Мінск...

Репутация: нет
Всего: нет



Как раз мне надо было тоже самое!
За 10 минут ковыряния я таки распечатал  датагрид.
Итак:
1. Вешаем на кнопку печати:
Код

        private void button7_Click(object sender, EventArgs e)
        {
            MyDataGridView = d; // d-мой датагрид, который на форме
            if (SetupThePrinting())
                MyPrintDocument.Print();
        }

2. Вставляем этот код:
Код

         DataGridView MyDataGridView = new DataGridView();
        DataGridViewPrinter MyDataGridViewPrinter;

        private bool SetupThePrinting()
        {
            PrintDialog MyPrintDialog = new PrintDialog();
            MyPrintDialog.AllowCurrentPage = false;
            MyPrintDialog.AllowPrintToFile = false;
            MyPrintDialog.AllowSelection = false;
            MyPrintDialog.AllowSomePages = false;
            MyPrintDialog.PrintToFile = false;
            MyPrintDialog.ShowHelp = false;
            MyPrintDialog.ShowNetwork = false;

            if (MyPrintDialog.ShowDialog() != DialogResult.OK)
                return false;

            MyPrintDocument.DocumentName = "Customers Report";
            MyPrintDocument.PrinterSettings = MyPrintDialog.PrinterSettings;
            MyPrintDocument.DefaultPageSettings = MyPrintDialog.PrinterSettings.DefaultPageSettings;
            MyPrintDocument.DefaultPageSettings.Margins = new Margins(40, 40, 40, 40);

            if (MessageBox.Show("Do you want the report to be centered on the page", "InvoiceManager - Center on Page", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                MyDataGridViewPrinter = new DataGridViewPrinter(MyDataGridView, MyPrintDocument, true, true, "Отчет", new Font("Tahoma", 12, FontStyle.Regular, GraphicsUnit.Point), Color.Black, true);
            else
                MyDataGridViewPrinter = new DataGridViewPrinter(MyDataGridView, MyPrintDocument, false, true, "Отчет", new Font("Tahoma", 12, FontStyle.Regular, GraphicsUnit.Point), Color.Black, true);

            return true;        }        }

3. Кидаем на форму компанент PrintDocument, обзываем его "MyPrintDocument" и вешаем на событие "PrintPage" код:
Код

        bool more = MyDataGridViewPrinter.DrawDataGridView(e.Graphics);
        if (more == true)
        e.HasMorePages = true;

Вуаля. В 3-ем шаге сделал так, потому что у меня создаваемый кодом PrintDocument и обработчик события печати отказывались работать.
PM MAIL   Вверх
firefox
Дата 26.5.2011, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 4.5.2011

Репутация: нет
Всего: нет



2Yuretzzo  Большое спасибо.


Это сообщение отредактировал(а) firefox - 27.5.2011, 00:47
PM MAIL   Вверх
firefox
Дата 27.5.2011, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 4.5.2011

Репутация: нет
Всего: нет



А как сделать, чтоб таблица была вертикальная, а не горизонтальная?
PM MAIL   Вверх
Yuretzzo
Дата 29.5.2011, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 12.1.2011
Где: Менск і Мінск...

Репутация: нет
Всего: нет



Все что у меня получилось, так это в метод SetupThePrinting() вставить код:
Код

MyPrintDialog.PrinterSettings.DefaultPageSettings.Landscape = true;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.