vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Controls · DataGrid & DataGridView   |   VB-Versionen: VB.NET30.05.07
Settings für das DataGridView (VB.NET)

Klasse zur Verwaltung der Width- und DisplayIndex-Eigenschaften eines DataGridView-Controls

Autor:   Roland WutzkeBewertung:  Views:  27.013 
www.vb-power.netSystem:  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
 



Anzeige

Kauftipp Unser Dauerbrenner!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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


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.