Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Печать данных с WindowsForm в С# (http://forum.oszone.net/showthread.php?t=307064)

Sergei_alfimtsev 24-10-2015 20:50 2567769

Печать данных с WindowsForm в С#
 
Здравствуйте. При изучении С# столкнулся с задачей печати документа. Есть форма на ней tabControl1 на каждой вкладке которого в зависимости от назначения разные элементы. В основном по несколько TextBox-ов и обязательно DataGridView. Вопрос такой: воспользовавшись готовыми диалогами организации печати и предварительного просмотра смогу ли я распечатать содержимое данных элементов на одной странице и в тех местах где они расположены, если да, то как правильно это сделать? Почитал Петзольда на эту тему, но конкретных примеров схожих с моей задачей не нашел, если есть скиньте плиз.

corbis 25-10-2015 14:13 2567957

Насколько я понял, задача в соотнесении координат элементов управления на форме и данных на листе, так?
Т.е. печатаем форму, но без элементов; только данные из этих элементов.

Sergei_alfimtsev 25-10-2015 15:06 2567971

Да вы все правильно поняли. Небольшое уточнение: данные не из всей формы, а только из одной закладки элемента TabControl, на которой размещены TextBox и DateGridView.

Sergei_alfimtsev 25-10-2015 20:15 2568044

С помощью следующих методов добился печати информации из нужных мне элементов.

private void button2_Click(object sender, EventArgs e)
{
printPreviewDialog1.Document = printDocument1;
printPreviewDialog1.ShowDialog();
}

private void printPreviewDialog1_Load(object sender, EventArgs e)
{

}

private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
int WidthDGV1 = dataGridView1.Size.Width;
int HiegthDGV1 = dataGridView1.Size.Height;

Bitmap bmp = new Bitmap(dataGridView1.Size.Width +WidthDGV1, dataGridView1.Size.Height+HiegthDGV1 );
dataGridView1.DrawToBitmap(bmp,dataGridView1.Bounds);
e.Graphics.DrawImage(bmp,0,0);

e.Graphics.DrawString(textBox1.Text,new Font("Arial", 14),Brushes.Black,new Point(430,50));

}

private void button1_Click(object sender, EventArgs e)
{
printDocument1.Print();
}
Но возникла другая проблема. Информация из DataGridView отображается только та, которая в видимой области, а та, что не помещается в видимой области dataGridview нет.
Как решить эту задачу?


Время: 12:25.

Время: 12:25.
© OSzone.net 2001-