Nicomendox Ответов: 1

Почему бы не принять treeview selectednode на основе TextBox.text ?


Когда я пытаюсь установить фокус TreeViewNode на основе текстового поля.Текст (с не заботящимися прописными, строчными буквами), то никакого результата.

Для примера тег узла-это "C:\7143\Baltek")

если я войду ... C:\7143\baltek") или "C:\7143\BalteK") никакого результата из-за набора текста в Верхнем нижнем регистре

как я могу настроить поиск не с любым типом textbox.text.

Что я уже пробовал:

Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
        
        'Expand(TextBox3.Text) '("C:\7143\Baltek")
        gotNode = False
        For Each n As TreeNode In Me.TreeView1.Nodes
            If Not gotNode Then
                
                selectTreeNode(n, TextBox3.Text) ' "C:\7143\Baltek")

                
            End If
          
        Next

    End Sub

Maciej Los

Покажи нам свой selectTreeNode метод.

1 Ответов

Рейтинг:
1

Maciej Los

Я бы предложил начать с этого: Сравнивая строки .Продажи | документы Майкрософт[^]

Если вы хотите игнорировать case, проверьте это: Строка.Метод Равенства (Система) | Microsoft Docs[^]

Dim node2find = Me.TreeView1.Nodes.Cast(Of TreeNode)() _
	.Where(Function(n) n.Text.Equals(TextBox3.Text, StringComparison.InvariantCultureIgnoreCase)) _
	.ToList()


Приведенный выше код вернет список узлов, текст которых равен TextBox3.Text игнорируя регистр.

[РЕДАКТИРОВАТЬ]
Если вы хотите сравнить часть текста, вам нужно использовать одну из следующих строковых функций:
StartsWith
Contains
EndsWith
Пожалуйста, перейдите по первой ссылке (вверху моего ответа).


Nicomendox

Мне очень жаль, но я не мог работать с этим кодом. но здесь та же проблема

Private Sub Button13_Click(sender As Object, e As EventArgs) обрабатывает Button13.Click
Для каждого n As TreeNode в Me.TreeView1.Nodes(0).Nodes
Если n.Text = "пользователи", то
Элемента управления treeview1.SelectedNode = Н
Элемента управления treeview1.Выберите()
Элемента управления treeview1.SelectedNode.Расширять()

Конец, Если
Следующий
Конец Подводной Лодки


При Вводе "Пользователи" 'С Заглавной Буквы "U"
TreeView элемент.SelectedNode - это фокус на "C:\Users"
Но когда я набираю "пользователи" с "u"
на этот раз результат-ничто.

проблема в TreeView или в коде ?

Maciej Los

Вы уже говорили об этом:
Скрыть   скопировать код

SelectredNode is "C:\Users"

If n.Text = "Users" Then

и вот мой вопрос:
Неужели "C:\Users" равно ли это "пользователям"?

См. обновленный ответ.

Nicomendox

Абсолютно "C:\Users" то же самое с "пользователями"

"C:\Users" это тег, а "пользователи" - узел под Treeview.

Моя проблема в том, что я печатаю "C:\users" instade of "C:\Users-кодовая дозировка работает. потому что не все буквы совпадают со строкой поиска.

В TreeView имя узла - "пользователи", а не "пользователи". Проблема заключается в различии "u" и "U".

Maciej Los

Ни в коем случае! Проверьте это:

Dim s1 As String = "C:\Users"
Dim s2 As String = "users"

Console.WriteLine("Does '{0}' is equal to '{1}' = {2}", s1, s2, s1=s2)


А это:
Console.WriteLine("Does '{0}' constains '{1}' = {2}", s1, s2, s1.ToLower().Contains(s2.ToLower()))


;)