首页 > 解决方案 > 如何通过添加参数来搜索确切的控件类型而不是仅搜索文本框来更新此功能?

问题描述

我正在为我的程序的用户输入构建一些库。ErrorProvider如何通过添加参数来清除确切控件类型的消息而不仅仅是文本框来增强我的过程?

Friend Sub ClearErpMessages(Container As Control, ErpProvider As ErrorProvider)
    For Each tBox As TextBox In Container.Controls.OfType(Of TextBox).Where(Function(fTBox As TextBox) fTBox.Tag IsNot Nothing)
        ErpProvider.SetError(tBox, "")
    Next
End Sub

标签: vb.netlambda

解决方案


您需要使过程通用,并且需要应用通用约束,因为类型T必须是Control

Friend Sub ClearErpMessages(Of T As Control)(ByVal Container As Control, ByVal ErpProvider As ErrorProvider)
    For Each ctl As T In Container.Controls.OfType(Of T).Where(Function(c As T) c.Tag IsNot Nothing)
        ErpProvider.SetError(ctl, "")
    Next
End Sub
ClearErpMessages(Of TextBox)(Me, error_provider)
ClearErpMessages(Of ComboBox)(Me, error_provider)

推荐阅读