如何检查数组中所有TextBox控件的Tag属性?
我想要这样的东西:
If textBox.Tag And textbox2.Tag And textbox21.Tag And
textbox22.Tag And textbox23.Tag And textbox24.Tag = "2" Then
这是我的文本框数组:
Dim allTextboxes() As TextBox = {textBox, narNaslov, narPersona, narDani, narPersona2,
kupIme, kupAdresa, kupKontakt, uvBroj, uvDatum, uvIznos,
uvAvans, uvRok, uvNacin, datumTbox}
2条答案
按热度按时间9q78igpj1#
您可以使用LINQ
All()
方法为避免
NullReferenceException
,如果其中一个文本框为Nothing
,则可以添加一个附加复选框:也可以使用Null-conditional operator(Visual Basic v. 14或更高版本)
vjrehmav2#
您可以使用LINQ的All()扩展方法来验证数组中的所有控件是否具有相同的Tag。
您可以使用Any()方法来验证数组中是否至少有一个Control将其
Tag
设置为指定值。如果您有**
Option Strict ON
**,为了避免NullReferenceException
,因为Tag
属性的类型是Object
并且可以为空(Nothing
),您可以使用Is operator来执行检查:(数组中的a Control在某些时候也可以是
nothing
,因此我们可以使用txt?.Tag Is (...)
。在这种情况下,即使其中一个TextBox由于某种原因为
Nothing
,但如果其他TextBox都具有相同的Tag
值,则该方法将返回True
)如果
result
是True
,则所有TextBoxes.Tag
属性都设置为比较中使用的值。在以下情况下,此比较将返回True:
Control.Tag = "2"
,正如VisualVincent所指出的,
Is operator
不执行值比较;它确定两个Object是否引用同一个Object(在本例中,字符串是以编程方式创建的,因此比较是在intern pool table中的字符串引用上执行的)。这可能是一个理想的结果,也可能不是。
设置:
如果/当需要进行严格的数值比较时,可在以下情况下更改之前的方法:
在这两种情况下,它都将返回
True
:比较Tag
值以确定两个对象是否相等。在本例中,即使数组中的一个或多个控件已被释放或为
null
,并且符合**Option Strict
**,它也将为True
。但是,如果
Tag
属性之一设置为Nothing
,则将引发NullReferenceException
。在这种情况下,需要进行双重检查: