Назначение сочетания клавиш для кнопок панели инструментов средства просмотра отчетов - PullRequest
1 голос
/ 14 февраля 2011

Как я могу назначить сочетания клавиш для кнопок панели инструментов средства просмотра отчетов?

Например, назначьте клавишу F4 для экспорта в виде кнопки pdf

Ответы [ 2 ]

2 голосов
/ 20 марта 2011

Для печати я использовал эту часть кода в диалоге, где есть элемент управления ReportViewer

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

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

Для экспорта вы можете использовать reportViewer.ExportDialog ()

0 голосов
/ 03 апреля 2017

Я просто скомбинировал несколько решений и достиг этого решения.
поместите этот код в код вашей формы, чтобы там был просмотрщик отчетов.

public partial class frmReport : Form
    {
        public frmReportDevices()
        {
            InitializeComponent();
        }
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if (keyData == (Keys.Control | Keys.P))
            {
                rpt.PrintDialog();
            }
            if (keyData == (Keys.F2))
            {
                string _sSuggestedName = String.Empty;

                byte[] byteViewerPDF = rpt.LocalReport.Render("PDF");
                byte[] byteViewerExcel = rpt.LocalReport.Render("Excel");
                byte[] byteViewerWord = rpt.LocalReport.Render("Word");

                SaveFileDialog saveFileDialog1 = new SaveFileDialog();

                saveFileDialog1.Filter = "PDF files (.pdf)|.pdf| Doc files (.doc)|.doc| Excel files (.xls)|.xls";

                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    FileStream newFile = new FileStream(saveFileDialog1.FileName, FileMode.Create);
                    if (saveFileDialog1.FilterIndex == 1)
                    {
                        newFile.Write(byteViewerPDF, 0, byteViewerPDF.Length);
                        newFile.Close();
                    }
                    else if (saveFileDialog1.FilterIndex == 2)
                    {
                        newFile.Write(byteViewerWord, 0, byteViewerWord.Length);
                        newFile.Close();
                    }
                    else if (saveFileDialog1.FilterIndex == 3)
                    {
                        newFile.Write(byteViewerExcel, 0, byteViewerExcel.Length);
                        newFile.Close();
                    }
                }
            }
            return base.ProcessCmdKey(ref msg, keyData);
        }
}
...