CR XIの時点で、私が知っている唯一の方法は、エクスポートダイアログを独自のものに置き換えることです。CrystalReportViewerコントロールに独自のボタンを追加して、エクスポートボタンを非表示にすることができます。
エクスポートボタンを独自のボタン/イベントハンドラーに置き換えるvb.netコードは次のとおりです...
Public Shared Sub SetCustomExportHandler(ByVal crv As CrystalDecisions.Windows.Forms.CrystalReportViewer, ByVal export_click_handler As EventHandler)
For Each ctrl As Control In crv.Controls
'find the toolstrip
If TypeOf ctrl Is ToolStrip Then
Dim ts As ToolStrip = DirectCast(ctrl, ToolStrip)
For Each tsi As ToolStripItem In ts.Items
'find the export button by it's image index
If TypeOf tsi Is ToolStripButton AndAlso tsi.ImageIndex = 8 Then
'CRV export button
Dim crXb As ToolStripButton = DirectCast(tsi, ToolStripButton)
'clone the looks of the export button
Dim tsb As New ToolStripButton
With tsb
.Size = crXb.Size
.Padding = crXb.Padding
.Margin = crXb.Margin
.TextImageRelation = crXb.TextImageRelation
.Text = crXb.Text
.ToolTipText = crXb.ToolTipText
.ImageScaling = crXb.ImageScaling
.ImageAlign = crXb.ImageAlign
.ImageIndex = crXb.ImageIndex
End With
'insert custom button in it's place
ts.Items.Insert(0, tsb)
AddHandler tsb.Click, export_click_handler
Exit For
End If
Next
Exit For
End If
Next
'hide the default export button
crv.ShowExportButton = False
End Sub
次に、クリックハンドラーで、カスタマイズされたSaveFileDialogを表示し、最終的にReportDocument.ExportToDiskメソッドを呼び出します。このようにして、ダイアログのタイトルとファイル名を便利なものに設定し、もちろんデフォルトのエクスポートタイプを設定できます。