2017-12-11 37 views
0

보고서 뷰어가있는 Windows 양식이 있습니다. 현재는 양식 상단에 인쇄 아이콘 만 사용하여 인쇄 할 수 있습니다. 보고서 뷰어 컨트롤을 디자인 할 때 보고서.rdlc 파일로 설정했습니다. 이 양식의 로드 이벤트에서 내 코드입니다 :바로 가기 키를 사용하여 기존 보고서 뷰어 인쇄

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 
      } 
     } 

에서 KeyDown 이벤트 에, 나는 의 ReportViewer 컨트롤에 들어있는 보고서을 인쇄 할. 그렇게하려면 어떻게해야합니까? 미리 감사드립니다.

답변

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(); 
} 

참조 : Assign shortcut key to report viewer toolbar buttons

+0

당신에게 선생님 감사합니다. 너 내 많은 시간과 노력을 덜어 줬어. –