.NET - Печать данных с WindowsForm в С#

Ответить
 • Просмотры: 1
Аватара пользователя
Sergei_alfimtsev

.NET - Печать данных с WindowsForm в С#

Сообщение Sergei_alfimtsev »

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

Re: .NET - Печать данных с WindowsForm в С#

Сообщение corbis »

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

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

Re: .NET - Печать данных с WindowsForm в С#

Сообщение corbis »

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

Re: .NET - Печать данных с WindowsForm в С#

Сообщение Sergei_alfimtsev »

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



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 нет.

Как решить эту задачу?
Ответить

Вернуться в «Программирование и базы данных»