1
我有一個使用VB.NET(屬性名爲「tvwAcct」)的WinForm樹形視圖,我希望能夠使用給定的字符串搜索所有現有節點(「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功能財產調試,我可以看到這個代碼邏輯的作品,但似乎對「名稱」進行比較節點的屬性,而不是「文本」屬性。例如。如果我在我的「txtName」框中輸入了「NODE0000」行中的內容並嘗試離開,則錯誤消息將成功顯示並且驗證失敗。
所以,我知道它的工作原理,但它沒有看到正確的屬性。 有誰知道我可以如何強制它尋找文本而不是名稱?
你不能強迫它做任何事情,而不是它被編程做的事情。但是,您可以分配TreeNode.Name屬性,以便Find()將變得有用。 –
@HansPassant感謝你,這似乎是合理的。我不認爲你可以善意地將這個評論作爲潛在的答案來解釋嗎?我沒有足夠的經驗去理解你的想法。 – greenTree
@HansPassant我的意思是說,你提到「你可以指定TreeNode.Name屬性,這樣Find()就會變得有用。」我不確定這意味着什麼,如何解釋或者對我有用。 – greenTree