Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
3 / 3 / 2
Регистрация: 24.05.2013
Сообщений: 158

TreeView. Убрать разворот с кнопки +

31.07.2016, 12:57. Показов 994. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть TreeView, разворачивание и сворачивание ячеек(нодов) сделано по 1 клику по самой ячейки, через событие NodeMouseClick.
Однако если нажать на + (или -) рядом с ячейкой она разверзнется, а затем сработает событие NodeMouseClick и она сверяться обратно.

Задача - исправить данный баг.

Я не нашел как их (кнопки + / -) отключить или обработать их события... Что делать?

P.S. Код довольно длинный, и я его спрятал. (Не думаю что он тут нужен вообще)
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
        //====================== Загрузка данных в TreeView ======================
        private void PopulateTreeView()
        {
            TreeNode rootNode;
            string[] drivers = Directory.GetLogicalDrives();
 
            FavoriteFolders();
 
            foreach (string driv in drivers) //Проход по всем дискам
            {
                try
                {
                    rootNode = new TreeNode(driv);
                    rootNode.ImageKey = "Folder.png";
                    GetDirectories(driv, rootNode);
                    tvFolder.Nodes.Add(rootNode);
                }
                catch (IOException)
                {
                    continue;
                }
            }
        }
 
        private void FavoriteFolders()
        {
            addTreeView(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "Desktop", "FolderB.png");
            addTreeView(Environment.GetFolderPath(Environment.SpecialFolder.MyMusic), "Music", "FolderB.png");
            addTreeView(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Documents", "FolderB.png");
            addTreeView(Environment.GetFolderPath(Environment.SpecialFolder.Favorites), "Favorites", "FolderB.png");
        }
 
        private void addTreeView(string Path, string Name, string image)
        {
            TreeNode rootNode;
            rootNode = new TreeNode(Name);
            rootNode.ImageKey = image;
            rootNode.SelectedImageKey = image;
            rootNode.Tag = Path;
            GetDirectories(Path, rootNode);
            tvFolder.Nodes.Add(rootNode);
        }
 
 
        private void GetDirectories(string Path, TreeNode nodeToAddTo)
        {
            DirectoryInfo diPath = new DirectoryInfo(Path);
            TreeNode aNode;
            DirectoryInfo[] Dirs;
 
            try
            {
                Dirs = diPath.GetDirectories();
            }
            catch (UnauthorizedAccessException)
            {
                return;
            }
 
            foreach (DirectoryInfo subDir in Dirs)
            {              
                aNode = new TreeNode(subDir.Name, 0, 0);
 
                if (nodeToAddTo.Tag != null) { aNode.Tag = nodeToAddTo.Tag + "" + subDir.Name; }
 
                if ((subDir.Attributes & FileAttributes.System) == FileAttributes.System) continue; //Проверка доступа
                nodeToAddTo.Nodes.Add(aNode);
            }
        }
 
        private void tvFolder_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            OpenTreeViewNode(e.Node, true);
        }
 
        private void OpenTreeViewNode (TreeNode tvNode, bool Expand)
        {
            string FolderPath;
 
            if (tvNode.ImageKey == "")
            {
                tvNode.ImageKey = "Folder.png";
 
                if (tvNode.Tag == null) { FolderPath = tvNode.FullPath; } else { FolderPath = tvNode.Tag.ToString(); }
                GetDirectories(FolderPath, tvNode);
            }
            TreeNodeCollection NodeCollect = tvNode.Nodes; //Получить все подпапки
            foreach (TreeNode Node in NodeCollect)
            {
                if (Node.ImageKey == "")
                {
                    Node.ImageKey = "Folder.png";
 
                    if (Node.Tag == null) { FolderPath = Node.FullPath; } else { FolderPath = Node.Tag.ToString(); }
                    GetDirectories(FolderPath, Node);
                }
            }
            if (Expand) { if (tvNode.IsExpanded) tvNode.Collapse(); else tvNode.Expand(); }
        }
 
        private void tvFolder_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            downloadMFile();
            DownloadMTable(0, lMFile.Count - 1);
        }
 
        //Клавиши
        private void tvFolder_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)//Enter
            {
                OpenTreeViewNode(tvFolder.SelectedNode, false);
 
                if (tvFolder.SelectedNode.LastNode == null || tvFolder.SelectedNode.IsExpanded) 
                {
                    downloadMFile();
                    DownloadMTable(0, lMFile.Count - 1);
                }
                else
                {
                    tvFolder.SelectedNode.Expand();
                }
            }
 
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.07.2016, 12:57
Ответы с готовыми решениями:

Убрать автоматическое выделение узла в treeview
Добрый день! Подскажите, пожалуйста. При запуске приложения, в treeView1 автоматически выделяется первый узел. Как сделать так,...

Убрать мерцание TreeView при Resize формы
Добрый день,форумчане. Такая проблема: на форме есть элемент TreeView. Отрисовываю я его сама, метод переопределен. И при изменении...

Изменение содержимого TreeView в зависимости от нажатой кнопки
Не знаю как правильно назвать то действие которое хочу сделать, объясню своими словами. Есть вот такая форма: И я хочу сделать так...

2
3 / 3 / 2
Регистрация: 24.05.2013
Сообщений: 158
02.08.2016, 16:52  [ТС]
Я же сказал, что дело не в двойн щелчке. Дело в кнопках + и -
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.08.2016, 16:52
Помогаю со студенческими работами здесь

Нажатие правой кнопки мышки по пустому месту TreeView
Как отловить нажатие правой кнопки мышки по пустому месту MouseClick и Click не работают

Как убрать фон у кнопки?
Как убрать фон у кнопки? Нашел backcolor но его нельзя оставить без цвет обязательно какой нить должен быть( Что нибудь с этим сделать...

MessageBox убрать фокус с кнопки
Добрый день, есть собственный CustomMessageBox на котором одна кнопка и один лейбл, вызываю эту форму модально ( ShowDialog), какой бы в...

Как убрать картинку с кнопки
Здравствуйте, небольшая, но все же проблема. Что бы при нажатии на кнопку на нее устанавливалась картинка, я это сделал, но при втором...

Как убрать визуальные границы кнопки
Подскажите пожалуйста, как убрать визуальные границы кнопки (которые черного цвета)?


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru