Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Хочу создать свой TreeView


Автор: lankin 26.11.2008, 12:45
В общем сабж. Точнее, ч хочу просто взять TreeView стандартный и добавить в него своих методов несколько. 
Мне для этого нужно создавать Component.cs или какой-то иной?

Автор: QryStaL 26.11.2008, 12:58
lankin, унаследовать cвой класс NewTreeView от стандартного.

Автор: lankin 26.11.2008, 13:19
Это понятно. Вопрос в другом: можно же это сделать путем создания обычного пустого класса, путем создания компонента или путем создания формы? То есть я могу использовать на свое усмотрение любой из этих способов? Или всетаки для таких целей есть свой специализированнй класс исходный?

Автор: Partizan 26.11.2008, 13:27
lankin, если нужно добавить/переопределить несколько методов, то лучшее решение - написать наследника.

Код

public class MyCustomTreeView : TreeView
{
      ...
}

Автор: nagg 26.11.2008, 13:32
Посмотри рефлектором сурс TreeView  smile 
и ты увидешь использование\переопределение методов базового Control со смесью использования WinAPI 

Автор: lankin 26.11.2008, 13:42
Все сделал, вопрос был несколько в другом правда. 
Спасибо.

Автор: lankin 26.11.2008, 17:01
Еще вопрос: как мне сделать так, чтобы его можно было бросить на форму и он отобразился в виде TreeView? А то он внизк появляется, в дизайнере, а на форме пусто.

Добавлено через 2 минуты и 12 секунд
А! Сделал. Я создавал его не как просто пустой класс, а как Component.cs. Поэтому он унаследовался от Component.
Я заменил Component на TreeView и он оказался на форме. Это правильно?

был
Код

public partial class Navigator : Component

 
стал
Код

public partial class Navigator : TreeView


Добавлено через 3 минуты и 47 секунд
Но все Nodes, которые в дереве не отображает...ниче не пойму, блин....

Автор: Partizan 26.11.2008, 17:37
lankin, показывайте весь код...

Автор: lankin 27.11.2008, 16:07
Например я создал такой класс и создал в нем метод Load(). 

Код

class Loader : TreeView
    {
        public void Load()
        {
 
        }
    }


В этом методе я хочу загрузить в treeView какойнить TreeNode. Как мне это сделать?

Или проще будет сделать просто метод, возвращающий TreeView  сформированный:
Код

class Loader : TreeView
    {
        public TreeView Load()
        {
            return TreeView;
        }
    }

Автор: Partizan 27.11.2008, 19:36
lankin
Код

class Loader : TreeView
    {
        public void Load()
        {
             TreeNode newNode = this.Nodes.Add("Node1");
                   newNode.Nodes.Add("Node1.1");
                   newNode.Nodes.Add("Node1.2");
             this.Nodes.Add("Node2");
             this.Nodes.Add("Node3");
        }
    }

Автор: lankin 28.11.2008, 13:07
Partizan, Огромное спасибо!!!! Оказывается так просто.
А в таком случае что base. дает? обращение к базовому классу, и почему не его использовать?

Автор: TIGERоX 30.11.2008, 23:00
base дает доступ к методам, полям или свойствам базового класса даже если эти методы, поля, свойства определены как виртуальные и перегружены в дочернем классе

Автор: Mag 1.12.2008, 19:23
Цитата(lankin @ 28.11.2008,  13:07)
Partizan, Огромное спасибо!!!! Оказывается так просто.
А в таком случае что base. дает? обращение к базовому классу, и почему не его использовать?

Сегодня как раз попал на это: http://msdn.microsoft.com/ru-ru/library/hfw7t1ce.aspx - полностью описано про base

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)