У меня есть древовидное представление, в котором некоторые из трех узлов имеют строку, сохраненную в их объекте тега, а некоторые теги остаются пустыми. Позже я хочу использовать строки для чего-то в узлах, где они существуют.
For Each tn As TreeNode In TreeView1.Nodes
If Not String.IsNullOrWhiteSpace(tn.Tag) Then
Call DoTagStringStuff(tn.Tag)
End If
Next tn
Это работало нормально, пока мне не потребовалось включить option strict, чтобы мой код был совместим с проектом коллег. Я немного не понимаю, как лучше всего распаковать строку из объекта treenode.tag.
Во всплывающем окне с ошибкой предлагается использовать CStr
, но у меня создалось впечатление, что функция CStr
была только в VB.net как возврат к VB6 и действительно не должна использоваться для нового кода. Если я попробую tn.Tag.toString
в приведенном выше коде, я получаю сообщение об ошибке во время выполнения, когда не удается вычислить Nothing.toString
.
Как правильно это исправить? Должен ли я вообще использовать объект тега для хранения строковых значений в первую очередь, или есть лучшее свойство treenode, которое не требует распаковки, которое я могу использовать для этого?
Изменить: я думаю, возможно, это было бы правильно?
For Each tn As TreeNode In theNode.Nodes
If tn.Tag IsNot Nothing Then
Call DoTagStringStuff(DirectCast(tn.Tag, String))
End If
Next tn
За исключением того, что я больше не проверяю пустую или только пустую строку.
Tag
присутствует на большинстве (если не на всех) элементах управления. Я не вижу проблемы в использовании этого в некоторых случаях. Я не знаю случая TS, но это не возврат как таковой;). - person Styxxy   schedule 25.06.2013