Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
ToN.FiER
7 / 7 / 8
Регистрация: 11.04.2012
Сообщений: 87
1

Добавление, вставка и переименование узлов в TreeView

10.12.2012, 05:49. Просмотров 3881. Ответов 4
Метки нет (Все метки)

Хочу сделать добавление, вставку и переименование узлов в treeView без участия другой формы.
Чтобы нажал на добавить - добавился узел по текущему уровню
Вставить - добавился дочерний узел
Переименовать - выделился текущий узел, переименновали и все.

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
private void ct_Add_Click(Object sender, EventArgs e)
        {
            RadTreeNode Node = this.treeView.Nodes.Add("Введите текст");
            int nextId = iTreeView.GetNextId();
            Node.Value = nextId;
            this.treeView.AllowEdit = true;
            Node.BeginEdit();
        }
 
        private void ct_Insert_Click(Object sender, EventArgs e)
        {
            if (this.treeView.SelectedNode == null) 
                return;
 
            this.treeView.SelectedNode.Expand();
            RadTreeNode Node = new RadTreeNode();           
            RadTreeNode parentNode = this.treeView.SelectedNode;
            parentNode.Nodes.Add(Node);
            this.treeView.AllowEdit = true;
            Node.BeginEdit();
        }
        
    private void ct_Rename_Click(Object sender, EventArgs e)
        {
            if (this.treeView.SelectedNode == null)
                return;
                        
            RadTreeNode n = treeView.SelectedNode;
            this.treeView.AllowEdit = true;
            n.BeginEdit();
        }
        
    private void treeView_Edited(Object sender, TreeNodeEditedEventArgs e)
        {
            if (e.Node == null || e.Node.Text == "")
            {
                e.Node.Remove();
                return;
            }
            
            //топорный метод: если в бд хранится такой ID, значит переименовать нажали, иначе вставить
            if (iTreeView.ExistNodeInDB(e.Node.Value.ToString()))
                iFunctions.Insert(String.Format("UPDATE Nomenclature SET Name='{0}' WHERE Id='{1}'",
                    e.Node.Text, e.Node.Value));
            else
                iFunctions.Insert(String.Format("INSERT INTO Nomenclature(ID, ParentID, Name) VALUES('{0}','{1}','{2}')",
                    e.Node.Value, e.Node.Parent.Value, e.Node.Text));           
 
            e.Node.Image = (e.Node.Level == 0) ? Properties.Resources.action : Properties.Resources.contract;
            this.treeView.AllowEdit = false;                        
        }
Ошибки: При нажатии добавить, вставить или переименовать, в узел сначала добавляется значение Value (цифра ID). Даже если сделать так: Node.Text = "Введите текст", он все равно выведет value.
Вставка происходит нормально. При добавлении пишется "ссылка на объект бла-бла". И то, я сделал что добавление производится только в 0 уровень. Как сделать, чтобы добавлялось в текущий?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2012, 05:49
Ответы с готовыми решениями:

Добавление узлов в TreeView
Всем привет. На форме есть компоненты: TreeView, TextBox, Button. При нажатию...

Название узлов в treeview
В общем..последний символ в названии корневого узла не отображается, либо не...

Иконки узлов TreeView
У меня есть TreeView.У каждого узла есть иконка: узел, который без подузлов, у...

Получение поддочерних узлов TreeView
Добрый день. Структура дерева : Родительский узел - Дочерние узлы -...

Ограничить число узлов в treeview
народ подскажите, пожалуйста, возможно ли ограничить количество nodes в...

4
Бельфегор
666 / 580 / 138
Регистрация: 08.05.2009
Сообщений: 1,098
10.12.2012, 15:16 2
Пример:
2
Вложения
Тип файла: rar WindowsFormsApplication1.rar (39.2 Кб, 191 просмотров)
ToN.FiER
7 / 7 / 8
Регистрация: 11.04.2012
Сообщений: 87
10.12.2012, 17:32  [ТС] 3
1. Как node3 добавить? Условие то есть:
C#
1
2
3
4
5
6
7
8
if (selectedNode == null)
            {
                treeView1.Nodes.Add("nnn");
            }
            else
            {
                selectedNode.Nodes.Add("nnn");
            }
Но он только вставляет дочерный эелемент.
2. Как к БД прикрутить?
3. Не нужна мне еще один textBox. Нужно все манипуляции делать в treeView.
0
Бельфегор
666 / 580 / 138
Регистрация: 08.05.2009
Сообщений: 1,098
10.12.2012, 17:52 4
Цитата Сообщение от ToN.FiER Посмотреть сообщение
1. Как node3 добавить? Условие то есть:
Очисти выделенный нод.
C#
1
treeView1.SelectedNode.Checked = false;
Цитата Сообщение от ToN.FiER Посмотреть сообщение
2. Как к БД прикрутить?
Например:

C#
1
2
3
4
5
foreach (DataRow row in tbl.Rows)
{
    TreeNode node = new TreeNode(dr["name"], dr["Id"])
     TreeView1.Nodes.Add(node);
 }
Где tbl обьект типа DataTable который был инициализирован из БД.


Цитата Сообщение от ToN.FiER Посмотреть сообщение
3. Не нужна мне еще один textBox. Нужно все манипуляции делать в treeView.
C#
1
2
3
4
5
6
7
8
  private void startLabelEdit() {
        treeView1.LabelEdit = true;
        treeView1.SelectedNode.BeginEdit();
    }
 
    private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) {
        treeView1.LabelEdit = false;
    }
1
bina
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 41
22.05.2013, 10:16 5
Скажите, пожалуйста, а как сделать тоже самое, только на Delphi?
0
22.05.2013, 10:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2013, 10:16

Получение количества дочерних узлов в TreeView
Здравствуйте, подскажите имею дерево вида: -Родительский узел -дочерний ...

Обновление treeView с сохранением открытых узлов
Программно создаю каталог, подскажите плз каким образом можно обновить...

Компонент TreeView с выделением нескольких узлов
Есть ли какой-нибудь компонент, аналогичный TreeView, только чтобы можно было...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru