Vb.net 重置所有组件';s属性(排除的属性除外)

Vb.net 重置所有组件';s属性(排除的属性除外),vb.net,winforms,linq,typedescriptor,Vb.net,Winforms,Linq,Typedescriptor,我制作了一个子过程,该子过程将组件的所有属性放入一个列表中,然后重置它们的值,除了那些我声明为排除的值 Public Shared Sub ResetPropertiesByComponent(ByVal Component As Component, ByVal ExcludedProperties As String) Dim PropertyCollection As List(Of PropertyDescriptor) = TypeDescriptor.GetPropertie

我制作了一个子过程,该子过程组件的所有属性放入一个列表中,然后重置它们的值,除了那些我声明为排除的值

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
ExcludedProperties As String
ExcludedProperties As String()

Where(函数(项)项.名称不包括属性)
Where(函数(项)项.名称不包括属性)
。没有为类型
String()
定义As

我是这样使用的:
调用ResetPropertiesByComponent(Me,{“ClientSize”,“MinimumSize”})


我没有得到任何错误或东西,但它不工作太多!!!有什么想法吗?

您可以使用IEnumerable->Contains

.Where(Function(item) Not ExcludedProperties.Contains(item.Name))

快速阅读文档。它用于比较对象引用。它不会因为不应该出错而出错,并且总是返回True,因为字符串和字符串数组不一样。

您可以使用IEnumerable->Contains

.Where(Function(item) Not ExcludedProperties.Contains(item.Name))

快速阅读文档。它用于比较对象引用。它不会出错,因为它不应该出错,并且总是返回True,因为您的字符串和字符串数组不一样。

向这个“关注”我的问题的家伙表示衷心的感谢,他唯一的目的就是投票否决这些问题并投票让它们结束!!!如果我们能知道他是谁,并能为他的行为提供书面理由,那将是非常公平的。我投票决定将这个问题作为一个调试问题来结束,因为这是一个离题的问题。为什么一个最终成为调试问题的问题是离题的?这有什么规定吗?对这个“关注”我的问题的家伙说一声“谢谢”,他唯一的目的就是投票否决这些问题,投票让它们结束!!!如果我们能知道他是谁,并能为他的行为提供书面理由,那将是非常公平的。我投票决定将这个问题作为一个调试问题来结束,因为这是一个离题的问题。为什么一个最终成为调试问题的问题是离题的?这有什么规定吗?