Показать полную графическую версию : Печать данных с WindowsForm в С#
Sergei_alfimtsev
24-10-2015, 20:50
Здравствуйте. При изучении С# столкнулся с задачей печати документа. Есть форма на ней tabControl1 на каждой вкладке которого в зависимости от назначения разные элементы. В основном по несколько TextBox-ов и обязательно DataGridView. Вопрос такой: воспользовавшись готовыми диалогами организации печати и предварительного просмотра смогу ли я распечатать содержимое данных элементов на одной странице и в тех местах где они расположены, если да, то как правильно это сделать? Почитал Петзольда на эту тему, но конкретных примеров схожих с моей задачей не нашел, если есть скиньте плиз.
Насколько я понял, задача в соотнесении координат элементов управления на форме и данных на листе, так?
Т.е. печатаем форму, но без элементов; только данные из этих элементов.
Sergei_alfimtsev
25-10-2015, 15:06
Да вы все правильно поняли. Небольшое уточнение: данные не из всей формы, а только из одной закладки элемента TabControl, на которой размещены TextBox и DateGridView.
Sergei_alfimtsev
25-10-2015, 20:15
С помощью следующих методов добился печати информации из нужных мне элементов.
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 нет.
Как решить эту задачу?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.