У меня есть подпроцедура , которая получает все свойства компонента в список, а затем сбрасывается их значения, за исключением тех, которые я объявляю исключенными.
Public Shared Sub ResetPropertiesByComponent(ByVal Component As Component, ByVal ExcludedProperties As String)
Dim PropertyCollection As List(Of PropertyDescriptor) = TypeDescriptor.GetProperties(Component).OfType(Of PropertyDescriptor).
Where(Function(item) item.Name <> ExcludedProperties).
ToList()
For Each _PropertyDescriptor As PropertyDescriptor In PropertyCollection
If _PropertyDescriptor.CanResetValue(Component) Then
If _PropertyDescriptor.GetValue(Component) IsNot Nothing Then
_PropertyDescriptor.ResetValue(_Control)
End If
End If
Next
End Sub
И я использую это так: Call ResetPropertiesByComponent(Me, "ClientSize")
.
Моя проблема заключается в том, когдаЯ пытаюсь сделать так, чтобы исключал более одного свойства .Я изменил свою подпроцедуру следующим образом:
Public Shared Sub ResetPropertiesByComponent(ByVal Component As Component, ByVal ExcludedProperties As String())
Dim PropertyCollection As List(Of PropertyDescriptor) = TypeDescriptor.GetProperties(Component).OfType(Of PropertyDescriptor).
Where(Function(item) item.Name IsNot ExcludedProperties).
ToList()
For Each _PropertyDescriptor As PropertyDescriptor In PropertyCollection
If _PropertyDescriptor.CanResetValue(Component) Then
If _PropertyDescriptor.GetValue(Component) IsNot Nothing Then
_PropertyDescriptor.ResetValue(_Control)
End If
End If
Next
End Sub
С ExcludedProperties As String
на ExcludedProperties As String()
.
И с Where(Function(item) item.Name <> ExcludedProperties)
на Where(Function(item) item.Name IsNot ExcludedProperties)
.Поскольку <>
не определено для типа String()
.
И я использую его так: Call ResetPropertiesByComponent(Me, {"ClientSize", "MinimumSize"})
.
Я не получаю ошибок или что-то в этом роде, но это тоже не работает!!!Есть идеи?