دوست عزیز سلام !
به نظر من اگر شما از گزارش گیری دستی که خودتون ایجاد میکنید استفاده کنید کنترل گزارش مورد نظرتون راحت تر میشه .
برای اینکار مراحل زیر را انجام بدین :
ابتدا یک printDocument به فرم اضافه و بعد یک printPreviewControl رو اضافه کنید .
بعد داخل خواص printPreviewControl1 ، خاصیت Document اون رو به document1 که اول اضافه کرده بودین وصل کنید .
بعد داخل PrintPage مربوط به printDocument با استفاده از نمونه کد زیر یکی یکی فیلد ها تون رو بر دارین و اون ها رو از هر خاصیتی که هستند مثل عددی ، پولی و غیره با استفاده از توابع آماده و یا توابع سفارشی که خودتون میسازید اون ها رو تبدیل به رشته کنید و با استفاده از یک حلقه For فیلدها تون رو در محل مناسب قرار بدین .
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Graphics p = e.Graphics;
for (int i=0;i<=5;++i)
p.DrawString("Hello Free Print", new Font("Tahoma", 20, FontStyle.Bold, GraphicsUnit.Pixel), Brushes.Black, 10, i * 50)
}
بعد از اتمام کار داخل دکمه چاپ گزارش کد زیر رو بنویسید :
private void button1_Click(object sender, EventArgs e)
{
printDocument1.Print();
}
با این نوع گزارش گیری تقریبا هیچ غیر ممکنی نیست که ممکن نشه و گزارش کاملا در اختیارتون قرار میگیریه ، فقط اگر برای اولین بار هست که میخوای شروع کنی با مقادیر دستی و کوچک گزارش رو ایجاد کن تا کاملا به این موضوع احاطه لازم رو پیدا کنی و بعد سراغ پروژه اصلی خودت برو .
موفق باشی !