2016-12-19 27 views
0

propertyinfoオブジェクトでオブジェクトプロパティの値を取得する方法はありますか?propertyinfoオブジェクトでプロパティの値を取得

psudoコード:

propertyinfoObject = Text 
myobject.toCommand(propertyinfoObject) 

上記psudoコードが

myobject.Text 
と同じ操作を行う必要があります私の目標は、(その後、私が使用する任意のオブジェクト上で動作しますsimpelプロパティフォームを作成することですどのようなオプションを使用して表示するかを除外するキーワード)。

私の実際のコード

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 以下の提案としてだけでPropertyGridのを使用!

+1

PropertyGridはそれだけで何もしていませんか? – Plutonix

+0

:)あなたはとても正しいです!私はそれが存在するのか分からなかった。 .netフレームワークは非常に大きいので、あなたが新しい時には重要なものを見逃すのは簡単です:)。たぶん私は最初から最後まで私のVBの本を読んで、その中でジャンプするだけではありません! – implor

+0

答えがあなたの問題を解決した場合は、その横にあるチェックマークをクリックして、UnAngwered Listから移動します。答えを受け入れるか、(後で)上書きする質問や答えが役に立つと分かっている人は、他の人が良い答えを見つけるのに役立ちます。 [ツアー]は非常に短く、SOの仕組みについて説明しています。 – Plutonix

答えて

0

標準PropertyGridは既にすべてあなたのためです。

コントロールにはBrowsableAttributesプロパティが含まれており、指定した属性値を持つプロパティのみを表示するように指定することができます。既存の属性またはカスタム属性を使用できます。

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

テストコード:

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

賃金や何かを隠すために、Employeeクラスに

<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 

がそれを適用します。これは、目に見える小道具をタグ付けするため、具体的です

BrowsableAttributesはコレクションなので、いくつか追加できます。

関連する問題