VB.NET 2015 : Vorlagen Manager für Office Anwendungen
Ich habe mal wieder eine kleine Fingerübung in VB.NET gemacht, rausgekommen ist ein Vorlagen Manager für alle Arbeitsgruppen Vorlagen unabhängig von der Anwendung. Ob das Sinn macht oder nicht ist egal es war mal wieder eine gute Übung für mich. Wenn man zur Laufzeit Elemente erstellen möchte gibt es einiges zu beachten. In meinem Beispiel erstelle ich eine TabPage im TabControl und füge ein ListView Element hinzu.
Formular
Benötigt
Dieser verweist in meiner Sub auf die Funktion OpenFile_DoubleClick
Es gibt bestimmt schönere Weg oder auch andere die besser wären, wenn das so ist schreibts mir in die Kommentare. Ich bin bis jetzt zufrieden es funktioniert
Formular
Benötigt
Imports System.IODeklaration für den Pfad in der Klasse:
Dim varPath As New DirectoryInfo("pfad zu den Arbeitsgruppen Vorlagen")Sub für das erstellen zur Laufzeit :
Private Sub AddTabPage() Dim tempPage As TabPage Dim LView As ListView For Each oSubDir As DirectoryInfo In varPath.GetDirectories tempPage = New TabPage(oSubDir.Name) LView = New ListView() With LView .Dock = DockStyle.Fill .View = View.Details .Name = "lvw_" & oSubDir.Name .GridLines = True End With tempPage.Controls.Add(LView) AddHandler LView.DoubleClick, AddressOf OpenFile_DoubleClick AddHeader(LView) If oSubDir.GetFiles.Count > 0 Then tab_ctl.TabPages.Add(tempPage) GetFilesFromFolder(oSubDir, LView) End If Next End SubUm das erstellte Listview auch mit einem onKlick oder wie in meinem Fall DoppelKlick zu versehen wird AddHandler benötigt.
Dieser verweist in meiner Sub auf die Funktion OpenFile_DoubleClick
Private Sub OpenFile_DoubleClick(ByVal sender As Object, ByVal e As EventArgs) Dim lv As ListViewItem = CType(sender, ListView).FocusedItem Dim App As String = UCase(lv.SubItems(1).Text.ToString) Dim Template As String = lv.SubItems(2).Text.ToString Dim var_proc_start As String Select Case App Case "WO" var_proc_start = "winword.exe" Case "EX" var_proc_start = "excel.exe" Case "PP" var_proc_start = "powerpnt.exe" Case Else var_proc_start = Nothing End Select If Not (var_proc_start Is Nothing) Then Process.Start(Chr(34) & OfficePfad & var_proc_start & Chr(34), "/N " & Chr(34) & Template & Chr(34)) End If End SubHier werden die Header für das ListView Element geschrieben
Private Function AddHeader(ByVal Lstview As Object) Dim HEAD1, HEAD2, HEAD3 As ColumnHeader HEAD1 = New ColumnHeader HEAD2 = New ColumnHeader HEAD3 = New ColumnHeader With HEAD1 .Text = "Vorlage" .TextAlign = HorizontalAlignment.Left .Width = 650 End With With HEAD2 .Text = "Typ" .TextAlign = HorizontalAlignment.Center .Width = 50 End With With HEAD3 .Text = "Pfad" .TextAlign = HorizontalAlignment.Left .Width = 5 End With With Lstview .Columns.Add(HEAD1) .Columns.Add(HEAD2) .Columns.Add(HEAD3) End With End FunctionDatei Typ ermitteln :
Private Function Get_File_Type(ByVal File As FileInfo) Dim FTYPE As String Select Case File.Extension Case ".dotx" FTYPE = "WO" Case ".xltx" FTYPE = "EX" Case ".potx" FTYPE = "PP" Case Else FTYPE = "NA" End Select Return FTYPE End FunctionDateien in das Listview Element eintragen :
Private Sub GetFilesFromFolder(ByVal Folder As DirectoryInfo, ByVal oLiVi As Object) For Each File As FileInfo In Folder.GetFiles If File.Name.Substring(0, 1) = "~" Then Exit Sub End If Dim Item As New ListViewItem(File.Name) Item.SubItems.Add(Get_File_Type(File)) Item.SubItems.Add(File.FullName) oLiVi.Items.Add(Item) Next End SubForm Load :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load AddTabPage() End Sub
Es gibt bestimmt schönere Weg oder auch andere die besser wären, wenn das so ist schreibts mir in die Kommentare. Ich bin bis jetzt zufrieden es funktioniert