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.024 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. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... |
||||||||||||||||
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. |