Rubrik: Controls · DataGrid & DataGridView | VB-Versionen: VB.NET | 30.05.07 |
Settings für das DataGridView (VB.NET) Klasse zur Verwaltung der Width- und DisplayIndex-Eigenschaften eines DataGridView-Controls | ||
Autor: Roland Wutzke | Bewertung: | Views: 27.013 |
www.vb-power.net | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
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ß...
Roland Wutzke