2017-12-11 15 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

あなたの先生をお願いします。あなたは私の多くの時間と労力を節約しました –

関連する問題