' Read a property via reflection or return a default value
' Example: MessageBox.Show(GetProperty(Button1, "Text", ""))
Function GetProperty(ByVal obj As Object, ByVal propertyName As String, _
ByVal defaultValue As Object) As Object
Try
Dim pi As System.Reflection.PropertyInfo = obj.GetType().GetProperty _
(propertyName)
If Not pi Is Nothing Then
Return pi.GetValue(obj, Nothing)
End If
Catch
End Try
' if property doesn't exist or throws
Return defaultValue
End Function