VB.NETを使用したWinFormツリービューがあります(プロパティは "tvwAcct"という名前です)。ここでは、指定された文字列を持つ既存のすべてのノードを検索することができます。 ( "txtName.Text")、既に存在する場合は、重複エントリを停止するためのメッセージボックス警告をユーザーに与えます。すべての親ノードと子ノードを検索できる必要があります。次のように私の現在のツリー構造は、次のとおりです。Treeview.NodesのTextプロパティでの検索
銀行口座名
- >サブアカウント名1
- >サブアカウント名2
- >サブアカウント名3
私はMSDN.Microsoftを見てきたと見ることができるNodes.Findメトdが存在する。ここで
が私のコードです:
Private Sub txtName_Validating(eventSender As Object, eventArgs As CancelEventArgs) Handles txtName.Validating
Dim Cancel As Boolean = eventArgs.Cancel
' [ other 'if' conditions here ]
If tvwAcct.Nodes.Find(txtName.Text, b).Length > 0 Then
MyMsgBox("Sorry, this cost centre/bank account already exists.", MsgBoxStyle.Information)
End If
tvwAcct.NodesプロパティのWatch機能を使用してデバッグする一方で、私はこのコードのロジックが動作することがわかりますが、「名前」と比較するように見えることができますプロパティの代わりに、 "Text"プロパティを使用します。例えば。 "NODE0000"の行に何か入力して "txtName"ボックスに何か入力して離れると、エラーメッセージが正常に表示され、検証が失敗します。
私はそれが動作することを知っていますが、正しいプロパティを見ていません。 誰かが、名前ではなくテキストを探す方法を知っていますか?
これは、プログラムされた内容以外のことを強制することはできません。ただし、Find()が便利になるようにTreeNode.Nameプロパティを割り当てることができます。 –
@HansPassantこれは妥当と思われます。潜在的な答えとしてこのコメントを丁寧に説明することはできないと思いますか?私はあなたの考えを理解するのに十分な経験はありません。 – greenTree
@ HansPassant私が言っていることは、「Find()が便利になるようにTreeNode.Nameプロパティを割り当てることができます」ということです。私はこれが何を意味するのか、解釈する方法、またはこれを私にとって有用なものにするのかは不明です。 – greenTree