遍历所有 NumericUpDown 以检查值
Looping through all NumericUpDown to check the value
如何循环遍历所有 NumericUpDown 并检查值?
For Each control As Control In Me.Controls
Dim numControls As NumericUpDown = TryCast(control, NumericUpDown)
If numControls.Value > 14 Then
MsgBox("ok")
End If
Next
我试过但没用的那个
你所做的有些道理,但它有一个明显的缺陷。 TryCast
的全部要点是,如果转换失败而不是抛出异常,它会 returns Nothing
。然后您继续使用该结果,就好像它不是 Nothing
并且无论如何都会导致 NullReferencxeException
。如果您使用 TryCast
,那么您总是需要测试 Nothing
的结果。如果你不需要这样做,因为你知道结果不会是 Nothing
那么你不应该首先使用 TryCast
。
Dim numControls = TryCast(control, NumericUpDown)
If numControls IsNot Nothing AndAlso numControls.Value > 14 Then
也就是说,您可以一次性进行投射和过滤,因此没有必要这样做:
For Each numControls In Me.Controls.OfType(Of NumericUpDown)
If numControls.Value > 14 Then
示例代码还假定控件已直接添加到窗体中。如果它们已被添加到其他容器中,例如a Panel
,那么您需要使用该容器的 Controls
集合而不是表单。
如果您的任何 NumericUpDown 中的数值小于 15 是不可接受的,则将它们的最小值 属性 设置为 15,从而完全避免此检查
如果出于某种原因您仍然需要这样做,我会推荐类似
的东西
If Me.Controls.OfType(Of NumericUpDown).Any(Function(nud) nud.Value < 15)) Then ...
这样,如果其中任何一个小于 15,你就做一次。
尽可能避免使用消息框;它们对通过 UI 的用户流非常具有破坏性。当然,在一个表单上有 10 个 NUD,如果它们都超过 14 个,并且连续显示 10 个“ok”消息框,这对用户来说会非常烦人
如何循环遍历所有 NumericUpDown 并检查值?
For Each control As Control In Me.Controls
Dim numControls As NumericUpDown = TryCast(control, NumericUpDown)
If numControls.Value > 14 Then
MsgBox("ok")
End If
Next
我试过但没用的那个
你所做的有些道理,但它有一个明显的缺陷。 TryCast
的全部要点是,如果转换失败而不是抛出异常,它会 returns Nothing
。然后您继续使用该结果,就好像它不是 Nothing
并且无论如何都会导致 NullReferencxeException
。如果您使用 TryCast
,那么您总是需要测试 Nothing
的结果。如果你不需要这样做,因为你知道结果不会是 Nothing
那么你不应该首先使用 TryCast
。
Dim numControls = TryCast(control, NumericUpDown)
If numControls IsNot Nothing AndAlso numControls.Value > 14 Then
也就是说,您可以一次性进行投射和过滤,因此没有必要这样做:
For Each numControls In Me.Controls.OfType(Of NumericUpDown)
If numControls.Value > 14 Then
示例代码还假定控件已直接添加到窗体中。如果它们已被添加到其他容器中,例如a Panel
,那么您需要使用该容器的 Controls
集合而不是表单。
如果您的任何 NumericUpDown 中的数值小于 15 是不可接受的,则将它们的最小值 属性 设置为 15,从而完全避免此检查
如果出于某种原因您仍然需要这样做,我会推荐类似
的东西If Me.Controls.OfType(Of NumericUpDown).Any(Function(nud) nud.Value < 15)) Then ...
这样,如果其中任何一个小于 15,你就做一次。
尽可能避免使用消息框;它们对通过 UI 的用户流非常具有破坏性。当然,在一个表单上有 10 个 NUD,如果它们都超过 14 个,并且连续显示 10 个“ok”消息框,这对用户来说会非常烦人