C# 如何使用C在Windows应用程序中打印Crystal报表而不显示预览和打印机选择#

C# 如何使用C在Windows应用程序中打印Crystal报表而不显示预览和打印机选择#,c#,printing,crystal-reports,C#,Printing,Crystal Reports,我正在做帐单申请,所以我需要打印帐单而不预览报告。而且,我不喜欢在打印机对话框弹出窗口中选择打印机。它应该选择默认打印机 “PrintTopPrinter”不符合我的要求。我需要发送最新创建的BillID作为参数,以获取最新的详细信息 如果我不使用“PrintToPrinter”语法,打印机对话框弹出屏幕将显示“选择打印机”对话框 请指导我解决这个问题 谨附上我的代码片段供参考: Report_Path = System.IO.Path.GetDirectoryName(System.Refle

我正在做帐单申请,所以我需要打印帐单而不预览报告。而且,我不喜欢在打印机对话框弹出窗口中选择打印机。它应该选择默认打印机

“PrintTopPrinter”不符合我的要求。我需要发送最新创建的BillID作为参数,以获取最新的详细信息

如果我不使用“
PrintToPrinter
”语法,打印机对话框弹出屏幕将显示“选择打印机”对话框

请指导我解决这个问题

谨附上我的代码片段供参考:

Report_Path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\\Reports\\StandardBill.rpt";                        
ReportDocument rd = new ReportDocument();
rd.Load(Report_Path);
rd.SetDatabaseLogon(AccessingData.DBUserName, AccessingData.DBPassword);
ParameterFields paramFields = new ParameterFields();
ParameterField BillID = new ParameterField();
ParameterDiscreteValue discreteVal_BillID = new ParameterDiscreteValue();
BillID.ParameterFieldName = "BillNo";

discreteVal_BillID.Value = Convert.ToInt32(Bill_id);
BillID.CurrentValues.Add(discreteVal_BillID);

ParameterField CType = new ParameterField();
ParameterDiscreteValue discreteVal_CType = new ParameterDiscreteValue();
CType.ParameterFieldName = "ClientType";

discreteVal_CType.Value = ClientType;
CType.CurrentValues.Add(discreteVal_CType);

// Add parameter to the parameter fields collection.
paramFields.Add(BillID);
paramFields.Add(CType);
CRViewer1.ParameterFieldInfo = paramFields;

CRViewer1.ReportSource = rd;                        

CRViewer1.PrintReport();
rd.Close();
rd.Dispose();
你可以试试这个

                Dim crtableLogoninfos As New TableLogOnInfos
                Dim crtableLogoninfo As New TableLogOnInfo
                Dim crConnectionInfo As New ConnectionInfo
                Dim CrTables As Tables
                Dim CrTable As Table
                Dim cryRpt As New ReportDocument
                cryRpt.Load("report path")
                With crConnectionInfo
                    .ServerName = "servername"
                    .DatabaseName = "databasename"
                    .UserID = "userid"
                    .Password = "password"
                    .IntegratedSecurity = False

                End With
                CrTables = cryRpt.Database.Tables
                For Each CrTable In CrTables
                    crtableLogoninfo = CrTable.LogOnInfo
                    crtableLogoninfo.ConnectionInfo = crConnectionInfo
                    CrTable.ApplyLogOnInfo(crtableLogoninfo)
                Next
                cryRpt.SetDatabaseLogon("userid", crConnectionInfo.Password, crConnectionInfo.ServerName, crConnectionInfo.DatabaseName, crConnectionInfo.IntegratedSecurity)

                Dim crParameterFieldDefinitions As ParameterFieldDefinitions
                Dim crParameterFieldDefinition As ParameterFieldDefinition
                Dim crParameterValues As New ParameterValues
                Dim crParameterDiscreteValue As New ParameterDiscreteValue

                crParameterDiscreteValue.Value = BillID
                crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields
                crParameterFieldDefinition = crParameterFieldDefinitions.Item("BillID")
                crParameterValues = crParameterFieldDefinition.CurrentValues
                crParameterValues.Add(crParameterDiscreteValue)
                crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
                crParameterValues.Clear()

                 cryRpt.PrintOptions.PrinterName = "printername"
                cryRpt.PrintToPrinter(1, False, 0, 0)


            End If
我认为这应该能奏效。不过它是用VB编写的