我有一个树视图,其中一些树节点将一个字符串保存到它们的标签对象中,而一些标签则什么都没有。稍后我想在它们存在的节点中使用字符串。
For Each tn As TreeNode In TreeView1.Nodes
If Not String.IsNullOrWhiteSpace(tn.Tag) Then
Call DoTagStringStuff(tn.Tag)
End If
Next tn
这工作得很好,直到我需要打开选项严格以使我的代码与同事项目兼容。我对如何最好地从 treenode.tag 对象中拆箱字符串有点困惑。
错误弹出窗口建议使用CStr
,但我的印象是该CStr
函数仅在 VB.net 中作为对 VB6 的回归,并且真的不应该用于新代码。如果我tn.Tag.toString
在上面的代码中尝试,当它无法计算时,我会在运行时得到一个错误Nothing.toString
。
解决此问题的正确方法是什么?我是否应该首先使用标记对象来保存字符串值,或者是否有更好的不需要拆箱的树节点属性可以用于此目的?
编辑:我认为这可能是正确的?
For Each tn As TreeNode In theNode.Nodes
If tn.Tag IsNot Nothing Then
Call DoTagStringStuff(DirectCast(tn.Tag, String))
End If
Next tn
除了我不再检查空字符串或只有空格字符串。