vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
VB-Version 
Autor: Manfred X
Datum: 06.04.12 17:45

Hallo!

Hier die VB-Version dieses Tipps (ab Framework 3.5 wegen Extension Methods).

Zunächst ein Klassenbibliotheksprojekt (EnumBindingHelper) erstellen
und eine Klasse sowie ein Modul einfügen:

Die Klasse ...
''' <summary>Provides a description for an enumerated type</summary>
<AttributeUsage(AttributeTargets.[Enum] Or AttributeTargets.Field, _
  AllowMultiple:=False)> _
Public NotInheritable Class EnumDescriptionAttribute
    Inherits System.Attribute
 
    Private _description As String
 
    ''' <summary>Initializes a new instance of EnumDescriptionAttribute</summary>
    ''' <param name="description">The description to store in this attribute</param>
    Public Sub New(ByVal description As String)
        MyBase.New()
        _description = description
    End Sub
 
    ''' <summary>Gets the description stored in this attribute.</summary>
    ''' <value>The description stored in the attribute.</value>
    Public ReadOnly Property Description() As String
        Get
            Return _description
        End Get
    End Property
End Class
Das öffentliche (Standard-) Modul:
''' <summary>Provides Functions to interact with enumerated types. </summary>
Public Module modEnumHelper
 
    ''' <summary>Gets the DescriptionAttribute of an Enumtype value.</summary>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function GetDescription(ByVal value As [Enum]) As String
        If value Is Nothing Then
            Throw New ArgumentNullException("value")
        End If
        Dim description As String = value.ToString()
        Dim fieldInfo As Reflection.FieldInfo = value.[GetType]().GetField( _
          description)
        Dim attributes As EnumDescriptionAttribute() = _
        DirectCast(fieldInfo.GetCustomAttributes _
        (GetType(EnumDescriptionAttribute), False), EnumDescriptionAttribute())
 
        If attributes IsNot Nothing AndAlso attributes.Length > 0 Then
            description = attributes(0).Description
        End If
        Return description
    End Function
 
    ''' <summary>Converts the Enumtype to an IList-compatible object.</summary>
    ''' <returns>An IList containing the enumerated type value and 
    ' description.</returns>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function ToList(ByVal tp As System.Type) As IList(Of KeyValuePair(Of _
    [Enum], String))
        If tp Is Nothing Then
            Throw New ArgumentNullException("type")
        End If
 
        Dim list As New List(Of KeyValuePair(Of [Enum], String))
        Dim enumValues As Array = [Enum].GetValues(tp)
 
        For Each value As [Enum] In enumValues
            list.Add(New KeyValuePair(Of [Enum], String)(value, GetDescription( _
              value)))
        Next
        Return list
    End Function
End Module
Anwendung:
Projekt-Verweis auf die erstellte EnumBindingHelper-Bibliothek setzen ....
Imports EnumBindingHelper
 
Public Class Form1
 
    Public Enum SimpleEnum As Integer
        <EnumDescription("Niemals")> _
        Never = 0
        <EnumDescription("Heute")> _
        Today = 1
        <EnumDescription("die letzte Woche")> _
        Last7 = 2
        <EnumDescription("die letzten 14 Tage")> _
        Last14 = 4
        <EnumDescription("die letzten 30 Tage")> _
        Last30 = 8
        <EnumDescription("Jederzeit")> _
        All = 16
    End Enum
 
    Dim WithEvents EnumCombobox As New ComboBox With {.Parent = Me}
    Dim ValueTextBox As New TextBox With {.Parent = Me, .Top = 50, .Width = 60}
 
    Private Sub Form1_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load
 
        With EnumCombobox
            .DisplayMember = "Value"
            .ValueMember = "Key"
            .DataSource = GetType(SimpleEnum).ToList()
        End With
    End Sub
 
    Private Sub SelectedIndexChanged(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles EnumCombobox.SelectedIndexChanged
        With EnumCombobox
            ValueTextBox.Text = CStr(.SelectedValue)
        End With
    End Sub
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Valuemember, Displaymember in Enum gebundener Combobox3.670Theo_kkv06.04.12 10:00
Re: Valuemember, Displaymember in Enum gebundener Combobox3.075ModeratorDaveS06.04.12 11:18
Re: Valuemember, Displaymember in Enum gebundener Combobox2.987Theo_kkv06.04.12 14:50
Re: Valuemember, Displaymember in Enum gebundener Combobox2.955ModeratorDaveS06.04.12 15:19
VB-Version3.027Manfred X06.04.12 17:45
Re: VB-Version2.838ModeratorDaveS06.04.12 17:59
Re: VB-Version3.060Manfred X06.04.12 18:01
Re: VB-Version3.063keco06.04.12 18:22
Re: VB-Version2.857Manfred X06.04.12 18:44
Re: VB-Version2.869Manfred X06.04.12 22:58
Re: VB-Version2.896Theo_kkv11.04.12 17:20
Re: Valuemember, Displaymember in Enum gebundener Combobox2.917Micke13.04.12 11:08

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel