我正在尝试遍历面板中的所有控件,并查找用户为每个控件更改了哪些属性。
所以我有这个代码:
Private Sub WriteProperties(ByVal cntrl As Control)
Try
Dim oType As Type = cntrl.GetType
'Create a new control the same type as cntrl to use it as the default control
Dim newCnt As New Control
newCnt = Activator.CreateInstance(oType)
For Each prop As PropertyInfo In newCnt.GetType().GetProperties
Dim val = cntrl.GetType().GetProperty(prop.Name).GetValue(cntrl, Nothing)
Dim defVal = newCnt.GetType().GetProperty(prop.Name).GetValue(newCnt, Nothing)
If val.Equals(defVal) = False Then
'So if something is different....
End If
Next
Catch ex As Exception
MsgBox("WriteProperties : " & ex.Message)
End Try
End Sub
现在我面临三个问题:
当属性引用图像(背景图像)时,我有一个错误:ImageObject 引用未设置为对象的实例。
第二个问题是代码:
If val.Equals(defVal) = False Then 'So if something is different.... End If
is 有时在 val 和 defVal 相同时执行。如果属性是像 FlatAppearance 一样的“parentProperty”(它有更多的子属性),就会发生这种情况
我的循环没有查看我想要的基本属性,如大小或位置