Rubrik: Verschiedenes / Sonstiges | VB-Versionen: VB2008 - VB2015 | 13.02.17 |
2 Funktionen zur Manipulation des ReportViewer-Controls Es werden 2 Funktion gezeigt, die einerseits bewirken, dass die Untermenüpunkte von 'Export' mit Icons versehen werden und andererseits, dass ein solcher Untermenüpunkt ausgeblendet werden kann. | ||
Autor: Dietrich Herrmann | Bewertung: | Views: 5.656 |
ohne Homepage | System: Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Im Folgenden übermittle ich die in der Kurzbeschreibung erwähnten Funktionen und ihre Anwendung.
1. Untermenüpunkte von 'Export' mit Grafiken versehen (besteht allerdings aus 3 Funktionen, die als Hilfsfunktionen funktionieren):
''' <summary> ''' Hinzufügen von Icons zu den DropDown-Items Export ''' </summary> ''' <param name="rpv">das ReportViewerControl-</param> ''' <param name="ItemName"></param> Public Sub AddImgRVToolBar(rpv As ReportViewer, ItemName As String) Dim ts As ToolStrip = FindToolStrip(Of ToolStrip)(rpv) If ts IsNot Nothing Then Dim exportButton As ToolStripDropDownButton = TryCast(ts.Items(ItemName), ToolStripDropDownButton) If exportButton IsNot Nothing Then AddHandler exportButton.DropDownOpened, AddressOf OnExportOpened End If End If End Sub
' die Grafiken bei den Untermenüpunkten einsetzen Public Sub OnExportOpened(sender As Object, e As EventArgs) If TypeOf sender Is ToolStripDropDownButton Then Dim button As ToolStripDropDownButton = DirectCast(sender, ToolStripDropDownButton) For Each item As ToolStripItem In button.DropDownItems Dim extension As RenderingExtension = DirectCast(item.Tag, RenderingExtension) If extension IsNot Nothing Then Select Case extension.LocalizedName Case "Excel" item.Image = My.Resources.excel Case "PDF" item.Image = My.Resources.pdf Case "Word" item.Image = My.Resources.word End Select End If Next End If End Sub
' den Toolstrip des ReportViewer-Controls ermitteln Private Function FindToolStrip(Of T As Control)(ByVal control As Control) As T If control Is Nothing Then Return Nothing ElseIf TypeOf control Is T Then Return DirectCast(control, T) Else Dim result As T = Nothing For Each embedded As Control In control.Controls If result Is Nothing Then result = FindToolStrip(Of T)(embedded) Next Return result End If End Function
In meinem Konstrukt sieht man, dass die Grafiken im Ressource-Ordner des VB-Projekts liegen sollten.
Anwendung:
Dim rpv As New ReportViewer ...
Nachdem rpv initialisiert wurde: AddImgRVToolBar(rpV, "export")
2. 'Export'-Untermenüpunkt ausblenden:
''' <summary> ''' Unsichtbarmachen eines DropDown-Items von Export ''' </summary> ''' <param name="rpv">das ReportViewer-Control</param> ''' <param name="strFormatName">der Name des betreffenden DropDown-Items</param> Public Sub DisableUnwantedExportFormat(rpv As ReportViewer, strFormatName As String) Dim info As FieldInfo For Each extension As RenderingExtension In rpv.LocalReport.ListRenderingExtensions() If extension.Name = strFormatName Then info = extension.[GetType]().GetField("m_isVisible", BindingFlags.Instance _ Or BindingFlags.NonPublic) info.SetValue(extension, False) End If Next End Sub
Anwendung:
Nachdem rpv initialisiert wurde bspw.: DisableUnwantedExportFormat(rpV, "PDF")