Hallo allerseits,
ich durchlaufe alle Controls eines Formulars. Dabei übergebe ich jedes cCtrl As Control an eine Funktion. Diese durchläuft alle Properties des bis dahin unbekannten Controls...
In eine Datenbank habe ich für mich relevante Controls und deren für mich relevanten Properties. Beispiel:
Button --------- Text
Label ---------- Text
ToolStrip ----- Items ----- Text
ComboBox--- Items
usw...
Wenn ich beim Durchlaufen der Controls auf eine ComboBox und beim durchlaufen derer Properties auf Items treffe, dann caste ich die Property Items in eine enumerierbare Auflistung. Zu beachten ist, dass jedes Item in dieser Auflistung ein String ist.
Wie kann ich nun die Auflistungs-Elemente durchlaufen und Ihnen einen neuen String-Wert übergeben, so dass dann diese Werte am Ende in der ComboBox stehen? Bei der Zuweisung unten im Code oItem = "test" meckert der Compiler zwar nicht, aber am Ende steht dann in der ComboBox doch der ursprüngliche String.
Also cCtrl As Control wird übergeben und dann:
Dim tCtrlType As Type = cCtrl.GetType() '>> Typ des Steuerelementes
Dim piPropertyInfo As PropertyInfo '>> Eigenschaftsinformation eines Objektes
For Each piPropertyInfo In tCtrlType.GetProperties()
Next
ich durchlaufe alle Controls eines Formulars. Dabei übergebe ich jedes cCtrl As Control an eine Funktion. Diese durchläuft alle Properties des bis dahin unbekannten Controls...
In eine Datenbank habe ich für mich relevante Controls und deren für mich relevanten Properties. Beispiel:
Button --------- Text
Label ---------- Text
ToolStrip ----- Items ----- Text
ComboBox--- Items
usw...
Wenn ich beim Durchlaufen der Controls auf eine ComboBox und beim durchlaufen derer Properties auf Items treffe, dann caste ich die Property Items in eine enumerierbare Auflistung. Zu beachten ist, dass jedes Item in dieser Auflistung ein String ist.
Wie kann ich nun die Auflistungs-Elemente durchlaufen und Ihnen einen neuen String-Wert übergeben, so dass dann diese Werte am Ende in der ComboBox stehen? Bei der Zuweisung unten im Code oItem = "test" meckert der Compiler zwar nicht, aber am Ende steht dann in der ComboBox doch der ursprüngliche String.
Also cCtrl As Control wird übergeben und dann:
Dim tCtrlType As Type = cCtrl.GetType() '>> Typ des Steuerelementes
Dim piPropertyInfo As PropertyInfo '>> Eigenschaftsinformation eines Objektes
For Each piPropertyInfo In tCtrlType.GetProperties()
If tCtrlType.name.ToString() = "ComboBox" And piPropertyInfo.Name = Items Then
Dim collection As IEnumerable = TryCast(piPropertyInfo.GetValue(cCtrl, Nothing), IEnumerable)
For Each oItem As Object In collection
oItem = "test"
Next
End If
Next