哦 差点忘了 PrintPage事件里面还有一个InitPrinter(Graphics g)方法代码如下(求高手帮我看一下 哪里出了问题?):
private void InitPrinter(Graphics g)
{
if (NowPage == 1)
{
if (!printDocument1.DefaultPageSettings.Landscape)
{
PaperPageWidth = printDocument1.DefaultPageSettings.PaperSize.Width;
PaperPageHeight = printDocument1.DefaultPageSettings.PaperSize.Height;
}
else
{
PaperPageHeight = printDocument1.DefaultPageSettings.PaperSize.Width;
PaperPageWidth = printDocument1.DefaultPageSettings.PaperSize.Height;
} ////打印纸的上下左右边距
PaperLeftMargin = printDocument1.DefaultPageSettings.Margins.Left;
PaperTopMargin = printDocument1.DefaultPageSettings.Margins.Top;
PaperRightMargin = printDocument1.DefaultPageSettings.Margins.Right;
PaperBottomMargin = printDocument1.DefaultPageSettings.Margins.Bottom; //Page页的内容尺寸.
ContentWidth = PaperPageWidth;//- PaperLeftMargin - PaperRightMargin;
ContentHeight = PaperPageHeight;// -PaperTopMargin - PaperBottomMargin; dgvWidth = InvoiceSet.dataGridView1.Width;
dgvHeight = InvoiceSet.dataGridView1.Height;
if (dgvWidth > ContentWidth)
dgvWidth = ContentWidth;
PageCount = (dgvHeight % ContentHeight == 0) ? dgvHeight / ContentHeight : dgvHeight / ContentHeight + 1;
X = PaperLeftMargin + (ContentWidth - dgvWidth) / 2;
Y = PaperTopMargin; for (int i = 0; i < InvoiceSet.dataGridView1.Columns.Count; i++)
{
if (InvoiceSet.dataGridView1.Columns[i].Visible == true)
{
ColsIndex.Add(i);
ColsWidth.Add(((float)InvoiceSet.dataGridView1.Columns[i].Width / (float)InvoiceSet.dataGridView1.Width) * (float)dgvWidth);
//if (InvoiceSet.dataGridView1.Rows[0].Cells[ColsIndex[i]].Style.Alignment.ToString().Contains("Left") ||
// InvoiceSet.dataGridView1.Rows[0].Cells[ColsIndex[i]].Style.Alignment.ToString().Contains("NotSet")) AlignmentList.Add(StringAlignment.Near);
//if (InvoiceSet.dataGridView1.Rows[0].Cells[ColsIndex[i]].Style.Alignment.ToString().Contains("Center"))
// AlignmentList.Add(StringAlignment.Center);
//if (InvoiceSet.dataGridView1.Rows[0].Cells[ColsIndex[i]].Style.Alignment.ToString().Contains("Right"))
// AlignmentList.Add(StringAlignment.Far);
}
}
}
}
private void InitPrinter(Graphics g)
{
if (NowPage == 1)
{
if (!printDocument1.DefaultPageSettings.Landscape)
{
PaperPageWidth = printDocument1.DefaultPageSettings.PaperSize.Width;
PaperPageHeight = printDocument1.DefaultPageSettings.PaperSize.Height;
}
else
{
PaperPageHeight = printDocument1.DefaultPageSettings.PaperSize.Width;
PaperPageWidth = printDocument1.DefaultPageSettings.PaperSize.Height;
} ////打印纸的上下左右边距
PaperLeftMargin = printDocument1.DefaultPageSettings.Margins.Left;
PaperTopMargin = printDocument1.DefaultPageSettings.Margins.Top;
PaperRightMargin = printDocument1.DefaultPageSettings.Margins.Right;
PaperBottomMargin = printDocument1.DefaultPageSettings.Margins.Bottom; //Page页的内容尺寸.
ContentWidth = PaperPageWidth;//- PaperLeftMargin - PaperRightMargin;
ContentHeight = PaperPageHeight;// -PaperTopMargin - PaperBottomMargin; dgvWidth = InvoiceSet.dataGridView1.Width;
dgvHeight = InvoiceSet.dataGridView1.Height;
if (dgvWidth > ContentWidth)
dgvWidth = ContentWidth;
PageCount = (dgvHeight % ContentHeight == 0) ? dgvHeight / ContentHeight : dgvHeight / ContentHeight + 1;
X = PaperLeftMargin + (ContentWidth - dgvWidth) / 2;
Y = PaperTopMargin; for (int i = 0; i < InvoiceSet.dataGridView1.Columns.Count; i++)
{
if (InvoiceSet.dataGridView1.Columns[i].Visible == true)
{
ColsIndex.Add(i);
ColsWidth.Add(((float)InvoiceSet.dataGridView1.Columns[i].Width / (float)InvoiceSet.dataGridView1.Width) * (float)dgvWidth);
//if (InvoiceSet.dataGridView1.Rows[0].Cells[ColsIndex[i]].Style.Alignment.ToString().Contains("Left") ||
// InvoiceSet.dataGridView1.Rows[0].Cells[ColsIndex[i]].Style.Alignment.ToString().Contains("NotSet")) AlignmentList.Add(StringAlignment.Near);
//if (InvoiceSet.dataGridView1.Rows[0].Cells[ColsIndex[i]].Style.Alignment.ToString().Contains("Center"))
// AlignmentList.Add(StringAlignment.Center);
//if (InvoiceSet.dataGridView1.Rows[0].Cells[ColsIndex[i]].Style.Alignment.ToString().Contains("Right"))
// AlignmentList.Add(StringAlignment.Far);
}
}
}
}
预留的控件够充足,那我请教一下 怎么获取打印机的对纸张的默认设置啊?初学者不太懂 谢谢!
打印机和预览不一致 有什么办法可以避免吗?
我的打印的模板都是设置好了的,没什么问题啊