Mit dem heutigen Tipp möchten wir Ihnen eine Klasse für VB.Net 2005 vorstellen, die die Widht- und DisplayIndex Eigenschaften einer DataGridView Instanz verwaltet. Die Eigenschaften werden zur Laufzeit in eine XML-Datei gespeichert und bei einem Neustart wieder geladen, so dass der Anwender seine eingestellte Spaltenbreite und Position der Spalten wieder erhält. Nachfolgend die Klasse clsDGVSettings: Option Strict On ''' <summary> ''' Verwaltet die Width und Orderposition der Columns einer DataGridView Instanz ''' </summary> ''' <remarks> ''' VB.Net 2005 Klassenmodul ''' Das nachfolgende Klassenmodul speichert alle Width und DisplayIndex Eigenschaften ''' der DataGridView Columns in eine XML Datei und liest sie aus. ''' ''' Mai 2007 - VB-Power.net ''' http://www.vb-power.net ''' </remarks> Public Class clsDGVSettings Private Structure ColumnOrgValue Dim Index As Integer Dim Width As Integer Dim DisplayIndex As Integer End Structure Private WithEvents m_DGV As DataGridView Private ColumnOrgList As List(Of ColumnOrgValue) Private dsDGV As DataSet Private dtDGV As DataTable ''' <summary> ''' Erzeugt eine neue Instanz der Klasse ''' </summary> Public Sub New() End Sub ''' <summary> ''' Erzeugt eine neue Instanz der Klasse ''' </summary> ''' <param name="DGV">Das DGV aus der Form, das an die Klasse gebunden werden soll</param> Public Sub New(ByVal DGV As DataGridView) m_DGV = DGV Me.InitDGVSettings() End Sub ''' <summary> ''' Das DGV, das an die Klasse gebunden ist ''' </summary> Public Property DGV() As DataGridView Get Return m_DGV End Get Set(ByVal value As DataGridView) m_DGV = value Me.InitDGVSettings() End Set End Property ''' <summary> ''' Liefert den Pfad für den Speicherort der Klasse ''' </summary> Public Function GetBaseDirectory() As String Dim AppPath As String = String.Empty AppPath = My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData If String.IsNullOrEmpty(AppPath) Then AppPath = System.AppDomain.CurrentDomain.BaseDirectory End If If Not AppPath.EndsWith("\") Then AppPath &= "\" Return AppPath End Function ''' <summary> ''' Initialisiert die Klasse ''' </summary> Private Sub InitDGVSettings() ColumnOrgList = New List(Of ColumnOrgValue) For Each c As DataGridViewColumn In m_DGV.Columns Dim st As New ColumnOrgValue st.Index = c.Index st.Width = c.Width st.DisplayIndex = c.DisplayIndex ColumnOrgList.Add(st) Next dsDGV = New DataSet("DGVSettings") dtDGV = New DataTable("DGVColumn") dtDGV.Columns.Add("Index", System.Type.GetType("System.Int32")).AllowDBNull = True dtDGV.Columns.Add("Width", System.Type.GetType("System.Int32")).AllowDBNull = True dtDGV.Columns.Add("DisplayIndex", System.Type.GetType("System.Int32")).AllowDBNull = True dsDGV.Tables.Add(dtDGV) End Sub ''' <summary> ''' Setzt alle Spalten des DGVs auf die ursprünglichen Einstellungen zurück ''' </summary> Public Sub ResetToDefault() Try For Each st As ColumnOrgValue In ColumnOrgList Dim c As DataGridViewColumn = m_DGV.Columns(st.Index) c.Width = st.Width c.DisplayIndex = st.DisplayIndex Next m_DGV.Refresh() Catch ex As Exception Throw End Try End Sub ''' <summary> ''' Liest die Einstellungen aus der XML-Datei ''' </summary> ''' <param name="FileName">Der vollständige Name der XML-Datei</param> Public Sub ReadDGVSettings(ByVal FileName As String) If System.IO.File.Exists(FileName) Then dsDGV.ReadXml(FileName) Try For Each r As DataRow In dtDGV.Rows Dim col As DataGridViewColumn = m_DGV.Columns(CInt(r("Index"))) col.Width = CInt(r("Width")) col.DisplayIndex = CInt(r("DisplayIndex")) Next Catch ex As Exception Throw End Try End If End Sub ''' <summary> ''' Schreibt die Einstellungen in eine XML-Datei ''' </summary> ''' <param name="FileName">Der vollständige Name der XML-Datei</param> Public Sub WriteDGVSettings(ByVal FileName As String) dtDGV.Rows.Clear() For Each col As DataGridViewColumn In m_DGV.Columns Dim r As DataRow = dtDGV.NewRow r("Index") = col.Index r("Width") = col.Width r("DisplayIndex") = col.DisplayIndex dtDGV.Rows.Add(r) Next dsDGV.WriteXml(FileName) End Sub End Class In unserem Demoprojekt zeigen wir Ihnen, wie die Klasse mit einem datengebundenen DataGridView genutzt wird. Die Demo können Sie hier downloaden. Viel Spaß... Dieser Tipp wurde bereits 27.051 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |