2016-12-19 4 views
0

Gibt es eine Möglichkeit, Wert eines Objekts Eigenschaften mit einem Property-Info-Objekt zu erhalten?Wert einer Eigenschaft mit propertyinfo Objekt erhalten

psudo Code:

propertyinfoObject = Text 
myobject.toCommand(propertyinfoObject) 

Der psudo Code über das gleiche wie

myobject.Text 

Mein Ziel tun sollten, ist ein Simpel Eigenschaften, die für ein beliebiges Objekt arbeiten bilden zu erstellen (Später werde ich verwenden Keywords, um herauszufiltern, welche Optionen ich verwenden möchte, um zu sehen).

Mein richtiger Code

Public Class PropertiesForm 
Dim propertyInfoVar() As PropertyInfo 
Dim Properties As New Form2 
Dim listItem As New ListViewItem 
Dim stringarray() As String 
Public Sub New(ByRef sender As Object) 



    propertyInfoVar = sender.GetType().GetProperties() 
    For Each p In propertyInfoVar 
     stringarray = {p.Name.ToString, #INSERT VALUE SOMEHOW HERE#} 

     listItem = New ListViewItem(stringarray) 
     Properties.ListView1.Items.Add(listItem) 
    Next 
    Properties.Visible = True 
End Sub 

EDIT Nur Property verwenden, wie unten vorgeschlagen!

+1

Nicht umsonst tut das PropertyGrid nicht schon alles? – Plutonix

+0

:) Sie sind so richtig! Ich wusste nicht, dass es existiert. Das .net-Framework ist so groß, dass es leicht ist, kritische Dinge zu verpassen, wenn Sie neu sind. Vielleicht sollte ich mein VB-Buch von Anfang bis Ende lesen und nicht nur darin herumspringen! – implor

+0

Wenn die Antwort Ihr Problem löst, klicken Sie bitte auf das Häkchen neben dem Problem, damit es aus der UnAnswered-Liste entfernt wird. Die Annahme von Antworten und die (später) Aufwertung von Fragen oder Antworten, die Sie als nützlich empfinden, hilft anderen, gute Antworten zu finden. Die [Tour] ist sehr kurz und erklärt, wie SO funktioniert. – Plutonix

Antwort

0

Der Standard PropertyGrid macht schon alles für Sie. Filtern von Eigenschaften ist nicht so offensichtlich, hier ist wie folgt:

Das Steuerelement enthält eine BrowsableAttributes -Eigenschaft, die Sie angeben können, dass nur Eigenschaften mit dem angegebenen Attributwert angezeigt werden sollen. Sie können vorhandene oder benutzerdefinierte Attribute verwenden. Dies ist speziell für sichtbare Stützen Tagging:

<AttributeUsage(AttributeTargets.Property)> 
Public Class PropertyGridBrowsableAttribute 
    Inherits Attribute 

    Public Property Browsable As Boolean 

    Public Sub New(b As Boolean) 
     Browsable = b 
    End Sub 
End Class 

es zu einer Klasse Employee Nehmen Lohnsätze oder irgendetwas anderes zu verbergen:

Public Class Employee 
    <PropertyGridBrowsable(True)> 
    Public Property FirstName As String 
    ... 
    <PropertyGridBrowsable(False)> 
    Public Property PayRate As Decimal 
    <PropertyGridBrowsable(False)> 
    Public Property NationalInsuranceNumber As String 

Prüfregeln:

Dim emp As New Employee With {.Dept = EmpDept.Manager, 
            .FirstName = "Ziggy", 
            .PayRate = 568.98D, 
            ... 
            .NationalInsuranceNumber = "1234567" 
            } 

propGrid.BrowsableAttributes = New AttributeCollection(New PropertyGridBrowsableAttribute(True)) 

propGrid.SelectedObject = emp 

enter image description here

BrowsableAttributes ist eine Sammlung, so dass Sie mehrere hinzufügen können.

Verwandte Themen