Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 29.08.2016
Сообщений: 131
1
.NET 4.x

Как запомнить последний выбор пользователя в TreeView

23.12.2017, 12:31. Показов 1768. Ответов 7

Author24 — интернет-сервис помощи студентам
Добрый день!
Подскажите, знающие люди))
Задача заключается в следующем:

Есть TreeView1 в котором пользователь выбирает тип некого расчета, после двойного клика по ноду - открывается тот или иной калькулятор для расчета.
Я хочу добавить checkbox для запоминания последнего выбора пользователя и при новом открытии программы, treeview разворачивается на последнем открытом узле предыдущего сеанса.

Я так понимаю, что запоминание выбора можно реализовать через my.settings, но остальную программную часть не могу додумать...
Кто может объяснить, как реализовать данную задумку, желательно с примером,
Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2017, 12:31
Ответы с готовыми решениями:

Запомнить последний выбор
Добрый! Такое дело: Например, есть chooser.exe, в нем 2 кнопки, открывающие, к примеру, chrome.exe...

Запомнить последний выбор в DBLookupCombobox
подскажите как запомнить в программе последний выбор в dblookupcombobox, например зашел в программу...

DropDownList: запомнить последний выбор в списке
Привет Всем! Подскажите пожалуйсто кто может! У меня есть дроп довн лист. В который передаю такой...

Powershell и Excel. Как запомнить последний номер строки?
Здравствуйте. Подскажите как сделать так что бы скрипт умел записывать номер строчки, с которой он...

7
1530 / 1478 / 322
Регистрация: 03.10.2012
Сообщений: 1,517
23.12.2017, 13:20 2
Лучший ответ Сообщение было отмечено AMG38 как решение

Решение

Цитата Сообщение от AMG38 Посмотреть сообщение
запоминание выбора можно реализовать через my.settings
А остальное примерно так
VB.NET
1
2
3
4
5
6
7
8
9
10
11
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Dim saveNode As String = "Узел15"
        Dim saveNode As String = My.Settings.SaveNode
        Dim nd As TreeNode
        nd = tv.Nodes.Find(saveNode, True)(0)
        tv.SelectedNode = nd
    End Sub
 
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        My.Settings.SaveNode = tv.SelectedNode.Name
    End Sub
1
0 / 0 / 0
Регистрация: 29.08.2016
Сообщений: 131
23.12.2017, 13:43  [ТС] 3
Спасибо большое!
Все оказалось просто)

У меня калькуляторы открываются по двойному клику на нод, как реализовать программный клик по необходимому ноду, для того, чтобы узел не просто раскрылся, а отобразился необходимый калькулятор?
0
1530 / 1478 / 322
Регистрация: 03.10.2012
Сообщений: 1,517
23.12.2017, 14:09 4
AMG38, Трудно что-либо сказать наверняка не зная, как у вас все реализовано, но попробуйте перенести код, который был в событии в отдельную процедуру, и вызывайте ее в Form_Load
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' ' '
        LoadCalc()
    End Sub
 
    Private Sub TreeView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.DoubleClick
        LoadCalc()
    End Sub
 
    Private Sub LoadCalc()
        'Здесь код, который был в событии _DoubleClick
    End Sub
0
0 / 0 / 0
Регистрация: 29.08.2016
Сообщений: 131
23.12.2017, 14:25  [ТС] 5
Вот код...
Открывалось при помощи события по тексту нода
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
  Sub treeView1_NodeMouseDoubleClick(ByVal sender As Object, ByVal e As TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseDoubleClick
        Try
            If e.Node.Text = "Электросварная" Then
                TabControl3.SelectedTab = TabPage16
            End If
            If e.Node.Text = "Бесшовная" Then
                TabControl3.SelectedTab = TabPage14
            End If
        Catch
        End Try
 
        My.Settings.TreePosition = TreeView1.SelectedNode.Name
    End Sub
Я так понимаю, что нужно пересмотреть условие открытия с e.NodeText на что-то другое?
0
1530 / 1478 / 322
Регистрация: 03.10.2012
Сообщений: 1,517
23.12.2017, 14:47 6
Лучший ответ Сообщение было отмечено AMG38 как решение

Решение

Ну, тогда как-то так
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub treeView1_NodeMouseDoubleClick(ByVal sender As Object, ByVal e As TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseDoubleClick
        LoadCalc(e.Node.Text)
    End Sub
 
    Private Sub LoadCalc(ByVal nodeText As String)
        Try
            If nodeText = "Электросварная" Then
                TabControl3.SelectedTab = TabPage16
            End If
            If nodeText = "Бесшовная" Then
                TabControl3.SelectedTab = TabPage14
            End If
        Catch
        End Try
    End Sub
Добавлено через 3 минуты
Да, и в FormLoad:
VB.NET
1
LoadCalc(nd.Text)
1
0 / 0 / 0
Регистрация: 29.08.2016
Сообщений: 131
23.12.2017, 15:24  [ТС] 7
Большое спасибо!
Со всем разобрался, все получилось)
0
1530 / 1478 / 322
Регистрация: 03.10.2012
Сообщений: 1,517
23.12.2017, 15:55 8
AMG38, несколько замечаний вдогонку:
1. Блок Try/Catch здесь явно лишний, тем более без обработки исключения. При отладке кода иногда это может сильно затруднить поиск ошибки.
2. В коде лучше оперировать именами элементов, нежели их текстом.
3. Блоки If/Then я бы заменил на один Select Case. На мой взгляд - выглядит более лаконично и читаемо.
VB.NET
1
2
3
4
5
6
7
8
Private Sub LoadCalc(ByVal nodeText As String)
        Select Case nodeText
            Case "Электросварная"
                TabControl3.SelectedTab = TabPage16
            Case "Бесшовная"
                TabControl3.SelectedTab = TabPage14
        End Select
    End Sub
1
23.12.2017, 15:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2017, 15:55
Помогаю со студенческими работами здесь

Excel 2010 Как запомнить последний элемент столбца
Доброго времени суток! Подскажите пожалуйста решение проблемы. Задача состоит в следующем, есть...

Как запомнить пользователя через сессию?
На сайте реализована авторитизация через сессию, разумеется после закрытия браузера юзер...

Как запомнить вошедшего пользователя на сайт ?
Как запомнить вошедшего пользователя на сайт, чтобы при следующем его входе ему не приходилось...

Как запомнить выбор города
Всем привет. Столкнулся с проблемой, решить которую без вашей помощи не смогу Есть сайт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru