crystal 报告中的捕获打印报告 'Print' 按钮
Capture print report 'Print' Button in crystal reports
所以我遇到了这个问题,我想在 crystal 报告中捕获打印报告按钮中的打印按钮。如何做到这一点?
用户点击crystal报表中的Print Report按钮,如第一张图所示,会弹出打印页面,如第二张图
所以当用户单击打印按钮时,我想在我的 vb 项目中做一些事情,比如放置一个消息框和 运行 一个查询。如何捕获'Print'按钮?
您可以试试这个解决方案:
Private Sub Frm_stampa_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Hide default button
crv_stampa.ShowPrintButton = False
' New print button
For Each ctrl As Control In crv_stampa.Controls
If TypeOf ctrl Is Windows.Forms.ToolStrip Then
Dim btnNew As New ToolStripButton
btnNew.Text = "Print"
btnNew.ToolTipText = "Print"
btnNew.Image = My.Resources.stampa
btnNew.DisplayStyle = ToolStripItemDisplayStyle.Image
CType(ctrl, ToolStrip).Items.Insert(0, btnNew)
AddHandler btnNew.Click, AddressOf tsItem_Click
End If
Next
' ---------------------------------------------
End Sub
Private Sub tsItem_Click(sender As System.Object, e As System.EventArgs)
' Put your code here, before print
Dim PrintDialog As New PrintDialog()
If PrintDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
rpt.PrintOptions.PrinterName = PrintDialog.PrinterSettings.PrinterName
rpt.PrintToPrinter(PrintDialog.PrinterSettings.Copies, PrintDialog.PrinterSettings.Collate, PrintDialog.PrinterSettings.FromPage, PrintDialog.PrinterSettings.ToPage)
End If
End Sub
你可以的!
Requeirements:C#(不过可以改成VB.NET),Visual Studio 2015,WPF平台
其中:[GenericReportViewer] 就是你的组件 crystal 报告
private void GenericReportViewer_Loaded(object sender, RoutedEventArgs e){
//where: GenericReportViewer thats it name your crystal report component
System.Windows.Controls.Button button = GenericReportViewer.FindName("btnPrint") as
System.Windows.Controls.Button;
button.Click += MyMethod;
}
private void MyMethod(object sender, RoutedEventArgs e){
//Your code here
}
如果您不想在 crviewer 工具条中添加自定义按钮,而只想捕获原生打印按钮的点击事件,您可以试试这个:
Private Sub frmViewReport_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
For Each control In crViewer.Controls
If TypeOf control Is ToolStrip Then
For Each item In control.items
If item.AccessibleName = "Imprimir Relatório" Then
Dim prtButton As ToolStripButton = DirectCast(item, ToolStripButton)
AddHandler prtButton.Click, AddressOf dostuff
Exit For
End If
Next
Exit For
End If
Next
End Sub
Private Sub dostuff()
MsgBox("Print button was pressed")
End Sub
请注意 item.AccessibleName 取决于文化
所以我遇到了这个问题,我想在 crystal 报告中捕获打印报告按钮中的打印按钮。如何做到这一点?
用户点击crystal报表中的Print Report按钮,如第一张图所示,会弹出打印页面,如第二张图
所以当用户单击打印按钮时,我想在我的 vb 项目中做一些事情,比如放置一个消息框和 运行 一个查询。如何捕获'Print'按钮?
您可以试试这个解决方案:
Private Sub Frm_stampa_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Hide default button
crv_stampa.ShowPrintButton = False
' New print button
For Each ctrl As Control In crv_stampa.Controls
If TypeOf ctrl Is Windows.Forms.ToolStrip Then
Dim btnNew As New ToolStripButton
btnNew.Text = "Print"
btnNew.ToolTipText = "Print"
btnNew.Image = My.Resources.stampa
btnNew.DisplayStyle = ToolStripItemDisplayStyle.Image
CType(ctrl, ToolStrip).Items.Insert(0, btnNew)
AddHandler btnNew.Click, AddressOf tsItem_Click
End If
Next
' ---------------------------------------------
End Sub
Private Sub tsItem_Click(sender As System.Object, e As System.EventArgs)
' Put your code here, before print
Dim PrintDialog As New PrintDialog()
If PrintDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
rpt.PrintOptions.PrinterName = PrintDialog.PrinterSettings.PrinterName
rpt.PrintToPrinter(PrintDialog.PrinterSettings.Copies, PrintDialog.PrinterSettings.Collate, PrintDialog.PrinterSettings.FromPage, PrintDialog.PrinterSettings.ToPage)
End If
End Sub
你可以的! Requeirements:C#(不过可以改成VB.NET),Visual Studio 2015,WPF平台 其中:[GenericReportViewer] 就是你的组件 crystal 报告
private void GenericReportViewer_Loaded(object sender, RoutedEventArgs e){
//where: GenericReportViewer thats it name your crystal report component
System.Windows.Controls.Button button = GenericReportViewer.FindName("btnPrint") as
System.Windows.Controls.Button;
button.Click += MyMethod;
}
private void MyMethod(object sender, RoutedEventArgs e){
//Your code here
}
如果您不想在 crviewer 工具条中添加自定义按钮,而只想捕获原生打印按钮的点击事件,您可以试试这个:
Private Sub frmViewReport_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
For Each control In crViewer.Controls
If TypeOf control Is ToolStrip Then
For Each item In control.items
If item.AccessibleName = "Imprimir Relatório" Then
Dim prtButton As ToolStripButton = DirectCast(item, ToolStripButton)
AddHandler prtButton.Click, AddressOf dostuff
Exit For
End If
Next
Exit For
End If
Next
End Sub
Private Sub dostuff()
MsgBox("Print button was pressed")
End Sub
请注意 item.AccessibleName 取决于文化