用于自定义控件上的每个异常的VB.NET
在VB.NET中,我有两个自定义控件,一个是文本框,另一个是组合框。 它们具有自定义值,如Bool_ishiden,并在运行时添加到表单中 现在,在代码中的某个点,我想检查_ishiden是否设置为True或False,并显示该信息。由于用户可以在创建控件时编辑这些值,因此在创建时不会设置这些值 所以我尝试的是: (所有这些都在MDI表单上) 现在。。如果第一个控件是自定义组合框,则会出现错误,因为它发现它与自定义文本框控件不匹配 我该怎么做?据我所知,它应该只检查上述表单上的所有控件,然后只检查那些与CustomTextBox控件匹配的控件 多谢各位 据我所知,它应该通过所有的控制 只需检查与CustomTextBox控件匹配的表单 恐怕那不对。您需要自己实施该检查,例如:用于自定义控件上的每个异常的VB.NET,vb.net,exception,exception-handling,for-loop,each,Vb.net,Exception,Exception Handling,For Loop,Each,在VB.NET中,我有两个自定义控件,一个是文本框,另一个是组合框。 它们具有自定义值,如Bool_ishiden,并在运行时添加到表单中 现在,在代码中的某个点,我想检查_ishiden是否设置为True或False,并显示该信息。由于用户可以在创建控件时编辑这些值,因此在创建时不会设置这些值 所以我尝试的是: (所有这些都在MDI表单上) 现在。。如果第一个控件是自定义组合框,则会出现错误,因为它发现它与自定义文本框控件不匹配 我该怎么做?据我所知,它应该只检查上述表单上的所有控件,然后只检
For Each cntrl as object in frm.Controls
If TypeOf cntrl Is CustomTextBox Then
With CType(cntrl, CustomTextBox)
.DoSomethingWithControl()
.DoSomethingElseWithControl()
End With
End If
Next
据我所知,它应该通过所有的控制
只需检查与CustomTextBox控件匹配的表单
恐怕那不对。您需要自己实施该检查,例如:
For Each cntrl as object in frm.Controls
If TypeOf cntrl Is CustomTextBox Then
With CType(cntrl, CustomTextBox)
.DoSomethingWithControl()
.DoSomethingElseWithControl()
End With
End If
Next
对于集合中的每个x As T
不会将集合项目筛选为T
类型的项目。它尝试将集合
中的每个项转换为T
,如果失败,则抛出异常
因此,您有以下选项:
For Each cntrl In frm.Controls.OfType(Of CustomTextBox)()
... ' Do this for all CustomTextBoxes
Next
For Each cntrl In frm.Controls.OfType(Of CustomComboBox)()
... ' Do this for all CustomComboBoxes
Next
这里不需要As CustomTextBox
子句,因为它返回一个IEnumerable(Of CustomTextBox)
,所以每个的可以自己推断cntrl
必须是CustomTextBox
类型
对于集合中的每个x As T
不会将集合项目筛选为T
类型的项目。它尝试将集合
中的每个项转换为T
,如果失败,则抛出异常
因此,您有以下选项:
For Each cntrl In frm.Controls.OfType(Of CustomTextBox)()
... ' Do this for all CustomTextBoxes
Next
For Each cntrl In frm.Controls.OfType(Of CustomComboBox)()
... ' Do this for all CustomComboBoxes
Next
这里不需要As CustomTextBox
子句,因为它返回一个IEnumerable(Of CustomTextBox)
,所以每个的可以自己推断cntrl
必须是CustomTextBox
类型