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