嗨聪明的人,
我遇到了问题,我无法在互联网上找到解决方案 .
Problem :PrintToPrinter方法的打印方式与Design不同 . 但是在水晶报表查看器中从水晶报表的预览打印时打印输出相同,但是用户不想在Windows窗体上单击打印并在打印预览(Crystal Report Viewer)中再次按打印 . 所以基本上我想直接将报告打印到打印机而不再询问用户 .
Page setup :
页面大小为:8.5 * 8.5英寸 . 没有打印机(针对屏幕尺寸进行了优化):检查了分离格式页面尺寸和打印机纸张尺寸:已检查用户定义尺寸:已选中
CrystalReportViewer的打印输出是所希望的 . 但PrintToPrinter方法的印刷纸张有所不同 .
请帮助我,我被卡住了 .
EDIT: 以下是 btnPrint
的事件处理程序 . 我希望用户在Windows窗体上单击 btnPrint
并希望打印出来 . 没有任何其他步骤 . 打印出来但不是预期的 .
如果在用户单击Crystal报表查看器上的打印按钮后单击 btnPrint
打开Crystal Report Viewer,并在选择打印机单击打印对话框上的打印按钮后,打印机将按预期打印 . 但是,消除这些步骤并不像以前那样打印 .
希望你能理解@aMazing
private void btnPrint_Click(object sender, EventArgs e)
{
if (txtBillNo.Enabled == false)
{
if (cmbPartyName.Enabled == false)
{
string strSelectPartyID = "SELECT PartyID from PartyList WHERE PartyName ='" + cmbPartyName.Text + "' AND CompanyID = " + companyID.ToString();
con = u.connect();
OleDbCommand cmdPartyID = new OleDbCommand(strSelectPartyID, con);
con.Open();
OleDbDataReader drPartyID = cmdPartyID.ExecuteReader();
drPartyID.Read();
partyID = drPartyID[0].ToString();
}
string strSelectBill = "SELECT * FROM BillList WHERE BillNo = " + txtBillNo.Text + " AND CompanyID = " + companyID.ToString();
string strSelectParty = "SELECT * FROM PartyList WHERE PartyID = " + partyID.ToString();
string strSelectItem = "SELECT * FROM ItemList WHERE CompanyID = " + companyID.ToString() + " AND BillNo = " + txtBillNo.Text;
OleDbDataAdapter daBillList = new OleDbDataAdapter(strSelectBill, con);
OleDbDataAdapter daItemList = new OleDbDataAdapter(strSelectItem, con);
OleDbDataAdapter daPartyList = new OleDbDataAdapter(strSelectParty, con);
DataSet dsBRSystem = new DataSet("BRSystem");
DataTable dtBillList = new DataTable("BillList");
DataTable dtPartyList = new DataTable("PartyList");
DataTable dtItemList = new DataTable("ItemList");
crpCodePrint crpBillPrint = new crpCodePrint();
frmDemoPrint DemoPrint = new frmDemoPrint();
daBillList.Fill(dtBillList);
daPartyList.Fill(dtPartyList);
daItemList.Fill(dtItemList);
dsBRSystem.Tables.Add(dtBillList);
dsBRSystem.Tables.Add(dtItemList);
dsBRSystem.Tables.Add(dtPartyList);
crpBillPrint.SetDataSource(dsBRSystem);
DemoPrint.crvDemo.ReportSource = crpBillPrint;
DemoPrint.crvDemo.RefreshReport();
//DemoPrint.Show();
//crpBillPrint.PrintToPrinter(1, false, 0, 0);
//DemoPrint.crvDemo.PrintReport();
PrinterSettings printSetting = new PrinterSettings();
printSetting.PrinterName = "Samsung SCX-3400 Series";
PaperSize paperSetting = new PaperSize("Custom", 850, 850);
PageSettings pageSetting = new PageSettings(printSetting);
pageSetting.PaperSize = paperSetting;
pageSetting.Landscape = false;
crpBillPrint.PrintToPrinter(printSetting, pageSetting, true);
}
else
{
MessageBox.Show("Please SAVE the Bill first.");
}
}