ho googlato anche io ed ho trovato questa splendida classe che ti posto su nopaste perchè altrimenti è troppo lungo il messaggio:
http://rafb.net/paste/results/ZtD9cw48.html
Per utilizzarla, ti basta fare una cosa del genere:
Aggiungi al tuo progetto una classe vuota ed incollaci il codice che vedi;
chiamala magari:
DataGridViewPrinter.cs
poi, supponendo che tu abbia un form con una datagridview:
codice:
//tuoi using...
//tuo namespace
public partial class TuoForm : Form
{
DataGridViewPrinter yourDataGridViewPrinter;
//...codice del form....
//creiamo una funziona per settare ciò che dobbiamo stampare:
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;
MyPrintDialog.PrinterSettings.DefaultPageSettings.Landscape = true;
if (MyPrintDialog.ShowDialog() != DialogResult.OK)
return false;
printDoc.DocumentName = "Titolo";
printDoc.PrinterSettings = MyPrintDialog.PrinterSettings;
printDoc.DefaultPageSettings = MyPrintDialog.PrinterSettings.DefaultPageSettings;
printDoc.DefaultPageSettings.Margins = new Margins(40, 40, 40, 40);
if (MessageBox.Show("Centra nel Foglio", "InvoiceManager - Centra sulla Pagina", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
MyDataGridViewPrinter = new DataGridViewPrinter(dgView, printDoc, true, true, "Titolo", new Font("Tahoma", 18, FontStyle.Bold, GraphicsUnit.Point), Color.Black, true);
else
MyDataGridViewPrinter = new DataGridViewPrinter(dgView, printDoc, false, true, "Titolo", new Font("Tahoma", 18, FontStyle.Bold, GraphicsUnit.Point), Color.Black, true);
return true;
}
//poi ci basta richiamare questa funzione da un evento qualsiasi, come la pressione di un bottone:
private void printButton_Click(object sender, EventArgs e)
{
if(SetUpThePrinting())
{
printDoc.Print();
}
}