2017-12-11 2 views
0

Ich habe ein Windows-Formular mit Report Viewer drin. Zur Zeit kann ich nur mit Drucken Symbol oben auf dem Formular drucken. Ich habe den Report auf eine .rdlc Datei in Entwurfszeit für Report Viewer-Steuerelement festgelegt. Dies ist mein Code in laden Ereignis eines Formulars:Drucken vorhandener Bericht-Viewer mit Tastenkürzel

private void BillViewer_Load(object sender, EventArgs e) 
     { 
      reportViewer1.SetDisplayMode(DisplayMode.PrintLayout); 
      reportViewer1.ZoomMode = ZoomMode.PageWidth; 
      DataTable tempDt = CafePOS.Menu.Model.MenuModel.GetOrderSummary(table_reservation_id); 
      DataTable billDt = new DataTable(); 
      billDt.Columns.Add("menu_item_name"); 
      billDt.Columns.Add("menu_rate"); 
      billDt.Columns.Add("qty"); 
      billDt.Columns.Add("total"); 
      int numOfCols = 0; 

      foreach (DataRow dr in tempDt.Rows) 
      { 
       billDt.Rows.Add(dr["menu_item_name"], (dr["menu_rate"]), (dr["qty"]), (dr["total"])); 
       numOfCols++; 
      } 
      billDataDT = billDt; 
      //calculate total 
      decimal totalCal = 0; 
      foreach (DataRow drr in tempDt.Rows) 
      { 
       totalCal += decimal.Parse(drr["total"].ToString()); 
      } 
      total = totalCal.ToString(); 
      grandTotal = grandTotal.ToString(); 
      discount = discount.ToString(); 
      received = "0.00"; 
      returnAmt = "0.00"; 
      Main.CommonDataSet.bill_dtDataTable DSbillDt = new Main.CommonDataSet.bill_dtDataTable(); 
      DSbillDt.Clear(); 
      IDataReader idr = DSbillDt.CreateDataReader(); 
      DSbillDt.Load(idr, LoadOption.OverwriteChanges); 
      ReportDataSource rds = new ReportDataSource("CDS", billDataDT); 
      reportViewer1.LocalReport.DataSources[0] = rds; 
      List<ReportParameter> rpc = new List<ReportParameter>(); 
      rpc.Add(new ReportParameter("billDate", DateTime.Now.ToShortDateString())); 
      rpc.Add(new ReportParameter("companyName", Library.GlobalValue.company_name)); 
      rpc.Add(new ReportParameter("companyAddress", Library.GlobalValue.address)); 
      rpc.Add(new ReportParameter("companyPhone", Library.GlobalValue.phone)); 
      rpc.Add(new ReportParameter("total", total)); 
      rpc.Add(new ReportParameter("grandTotal", grandTotal)); 
      rpc.Add(new ReportParameter("discount", discount)); 
      rpc.Add(new ReportParameter("cashReceived", received)); 
      rpc.Add(new ReportParameter("cashReturned", returnAmt)); 
      reportViewer1.LocalReport.SetParameters(rpc); 
      this.reportViewer1.RefreshReport(); 
     } 

private void BillViewer_KeyDown(object sender, KeyEventArgs e) 
     { 
      if (e.KeyCode == Keys.P) 
      { 
       //print report 
      } 
     } 

Auf KeyDown- Ereignis möchte ich den Bericht drucken, die in Report Steuerung geladen wird. Wie kann ich das tun? Vielen Dank im Voraus.

Antwort

1
protected override void OnKeyDown(KeyEventArgs e) 
{ 
    base.OnKeyDown(e); 

    if ((e.Key == Key.P) && (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))) 
    reportViewer.PrintDialog(); 
} 

Referenz: Assign shortcut key to report viewer toolbar buttons

+0

Danke Sir. Du hast mir viel Zeit und Mühe gespart –

Verwandte Themen