Tipp-Upload: VB.NET 0320: Enums in DataGridViewColumns
von Spatzenkanonier
Über den Tipp
Dieser Tippvorschlag ist noch unbewertet.
Der Vorschlag ist in den folgenden Kategorien zu finden:
- Datenbanken und XML
- Listensteuerelemente
Dem Tippvorschlag wurden folgende Schlüsselwörter zugeordnet:
Enum,DataGridView,Databinding
Der Vorschlag wurde erstellt am: 04.11.2008 10:49.
Die letzte Aktualisierung erfolgte am 11.01.2009 12:35.
Beschreibung
Man kann den Typ einer Datenspalte im typisierten Dataset auch auf eine Enumeration festlegen (hier: DockStyle).
Dem User möchte man die Enumerations-Werte dann logischeweise in einer Combobox zur Selektion anbieten, die die Mitglieder der Enumeration enthält.
Eigentlich kein Problem, die Enumerations-Mitglieder der ComboColumn als DataSource mitzugeben.
Doch (Bug!) fälschlicherweise wirft das Datagridview für diese Zellen eine FormatException (und hier wird gezeigt, wie man diese ignorieren kann).
Schwierigkeitsgrad |
Verwendete API-Aufrufe: |
Download: |
' Dieser Source stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' ' Beachten Sie, das vom Designer generierter Code hier ausgeblendet wird. ' In den Zip-Dateien ist er jedoch zu finden. ' --------- Anfang Projektgruppe EnumComboColumn.sln --------- ' -------- Anfang Projektdatei EnumComboColumn.vbproj -------- ' ------------ Anfang Datei frmEnumComboColumn.vb ------------ ' IDE-Voreinstellungen: ' Option Explicit On ' Option Strict On ' "My Project"-Einstellungen: ' Imports System.Windows.Forms Public Class frmEnumComboColumn Public Sub New() InitializeComponent() Me.DockComboColumn.DataSource = [Enum].GetValues(GetType(DockStyle)) Me.DockStyleDataSet.DockStyle.AddDockStyleRow(DockStyle.Top) Me.DockStyleDataSet.DockStyle.AddDockStyleRow(DockStyle.Fill) End Sub Private Sub ControlDataGridView_DataError(ByVal sender As Object, ByVal e As _ DataGridViewDataErrorEventArgs) Handles ControlDataGridView.DataError e.ThrowException = True ' nicht behandelte Fehler werfen With DirectCast(sender, DataGridView)(e.ColumnIndex, e.RowIndex) If TypeOf (.OwningColumn) Is DataGridViewComboBoxColumn AndAlso .ValueType.IsEnum Then ' Datagridview-Bug: Die Fehler-Meldung "Der Zellwert ist ungültig" ist ' schlicht falsch - der Zellwert **ist** gültig. Daher die Exception ohne ' weiteres ignorieren. e.ThrowException = False End If End With End Sub End Class ' ------------- Ende Datei frmEnumComboColumn.vb ------------- ' --------- Ende Projektdatei EnumComboColumn.vbproj --------- ' ---------- Ende Projektgruppe EnumComboColumn.sln ----------
Diskussion
Diese Funktion ermöglicht es, Fragen, die die Veröffentlichung des Tipps betreffen, zu klären, oder Anregungen und Verbesserungsvorschläge einzubringen. Nach der Veröffentlichung des Tipps werden diese Beiträge nicht weiter verlinkt. Allgemeine Fragen zum Inhalt sollten daher hier nicht geklärt werden.
Folgende Diskussionen existieren bereits
Um eine Diskussion eröffnen zu können, müssen sie angemeldet sein.