Отправляет email-рассылки с помощью сервиса Sendsay

Visual Basic.NET. Уроки

  Все выпуски  

Visual Basic.NET. Уроки


Информационный Канал Subscribe.Ru

Уроки по Visual Basic.NET. Рассылки сайта progs.biz  
Начало > VB.NET > Windows > Урок 26

Б. Ивьен, Дж. Берес. Visual Basic .NET. Библия пользователя.
Б. Ивьен, Дж. Берес. Visual Basic .NET. Библия пользователя
Заказать на Озоне


Полные версии уроков (с картинками): урок 26.

VB.NET для Windows
Урок 26. Пишем класс для дерева каталогов

На этом уроке мы начнем писать класс для дерева каталогов. Внешне он будет из себя представлять дерево - похожее на то, что вы видите в левой части проводника. На нижнем уровне этого дерева (в его корне) будут находится диски вашего компьютера (a:, c: и т. д.). При щелчке на некотором узле (который представляет из себя папку) он раскроется и покажутся все папки, которые находятся внутри папки.

Итак, начинаем писать.

Прежде всего наш класс будет потомком класса TreeView из пространства имен System.Windows.Forms. Это достаточно хороший выбор - готовое дерево со всей функциональностью у нас есть. Осталось только наполнить его нужными узлами (дисками и папками файловой системы нашего компьютера).

Вот необходимый код:

Public Class ForlderBr
    Inherits System.Windows.Forms.TreeView
    ' Конструктор класса.
    Public Sub New()
        Nodes.Clear()
        ' Получаем все диски (a:, c: и т.д.).
        Dim drives As String() = Directory.GetLogicalDrives()
        Dim s As String
        For Each s In drives
            ' Добавляем корневой элемент для каждого диска.
            Dim tn As TreeNode = Nodes.Add(s)
            ' Добавляем фиктивный подузел для каждого
            ' диска (для появления квадратика с плюсиком).
            tn.Nodes.Add("")
            ' Устанавливаем свойство tag.
            ' Пустое значение свойства ("") - узел еще не раскрывался.
            ' Значение ("+") - узел раскрывался
            ' и в него были добавлены нужные подузлы.
            tn.Tag = ""
        Next
    End Sub
End Class

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

Далее мы присваиваем свойству tag для каждого узла значение "" (пустая строка). Вообще свойство tag каждый программист может использовать по своему усмотрению - туда можно записать вообще любой объект. Мы используем свойство tag для построения нашего дерева папок следующим образом - если мы еще не добавляли подузлы для подпапок нашей папки X, то для этой папки X мы свойство tag устанавливаем в "". Это означает, что при щелчке на узел, соответствующий такой папке, нам надо будет добавить для нее все ее подпапки. После добавления подпапок для папки (т. е. после того, как мы щелкнули на соответствующем узле) свойство tag мы установим в "+". Это будет означать, что в следующий раз нам не надо будет добавлять подпапки для нашей подпапки.

В принципе мы могли бы заполнить все наше дерево сразу. Но такой подход не слишком хорош - если диск большой и папок много, то эта операция может занять весьма продолжительное время. Так что лучше заполнять дерево узлами по мере необходимости.

Теперь добавим в наш класс код, котрый будет выполняться при шелчке на некотором узле:

    Private Overloads Sub OnBeforeExpand(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.TreeViewCancelEventArgs) _
    Handles MyBase.BeforeExpand
        NodeExpand(e.Node)
    End Sub

в этом коде мы перекрываем метод OnBeforeExpand из родительского класса TreeView. В этом методе мы вызываем наш (пока еще не написанный) метод NodeExpand. Он принимает в качестве параметра узел, на котором мы щелкнули.

С этом уроком все, на следующем мы продолжим написание нашего класса.

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX new!
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
2002-2004 сайт progs.biz
2002-2004 Алексеев Игорь

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.vblessons
Отписаться

В избранное