一部のツリーノードの文字列がタグオブジェクトに保存され、一部のタグが何も残されていないツリービューがあります。後で、文字列が存在するノードで、文字列を何かに使用したいと思います。
For Each tn As TreeNode In TreeView1.Nodes
If Not String.IsNullOrWhiteSpace(tn.Tag) Then
Call DoTagStringStuff(tn.Tag)
End If
Next tn
コードを同僚のプロジェクトと互換性を持たせるためにオプション strict をオンにする必要があるまで、これはうまくいきました。treenode.tag オブジェクトから文字列を最適にアンボックスする方法について少し混乱しています。
エラーポップアップは の使用を示唆していますが、関数は VB6 への逆戻りとして VB.net にのみ存在し、実際には新しいコードに使用すべきではないCStr
という印象を受けました。CStr
上記のコードを試してみると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
空文字列または空白文字列のみをチェックしていないことを除いて。