Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: вопрос по treeview Добавлено: 15.10.06 13:41  

Автор вопроса:  Oloth Teken'duis
скажу честно, я программист QB и PDSB, более или менее VB6, а в .net я работаю 2 раз (то есть 2 день)
и у меня уже мозг опух. но данный объект вроде не особо притерпел изменения, скорее дополнения.

но вопрос не про это.
у меня такой вопрос, как в ветку дерева, вложить новую, когда уровень ветки не известен.
то есть:
есть какое то дерево
в этом дереве в какой то ветке, вложенной в другую надо вставить новую, я знаю ключ ветки, в которую хочу вставить новую.
как это сделать по нормальному
вариант типа
object.nodes("key").nodes("key").nodes("key").nodes("key").nodes("key").nodes("key").nodes("key").nodes("key").add
меня признаться честно не вставляет.
есть какие то более или менее удобоваримые варианты? или алгоритмы... очень жду ответа. если что я еще в асе есть =)

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Oloth Teken'duis



Вопросов: 2
Ответов: 7
 Профиль | | #1 Добавлено: 15.10.06 16:17
народ уже дочитал до 8 стр. данного форума, ответа всё нет. я понимаю, что на барсике, даже на нет барсике, мало кто пишет. но я очень жду ответа.

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

Ответить

Номер ответа: 2
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 15.10.06 16:19
Что-то типа
TreeNodeCollection tnc = object.nodes
for i=1 to n
  tnc = tnc("key";).nodes
next
tnc("key";).add...

Ответить

Номер ответа: 3
Автор ответа:
 Oloth Teken'duis



Вопросов: 2
Ответов: 7
 Профиль | | #3 Добавлено: 15.10.06 16:36
смысл такой
к примеру возьмём дерево каталогов. смысл тот же.

у меня есть
диск C: - рут и папки

C:
C:\WINDOWS
C:\WINDOWS\INF
C:\WINDOWS\SYSTEM32

допустим мне надо в три добавить 2 папки
1. C:\totalcmd
2: C:\WINDOWS\SYSTEM32\DRIVERS
в первом случаи
команда
object(рут).nodes.add ("totalcmd", "totalcmd";)
object(рут).nodes("Windows";).nodes(SYSTEM).add ("drivers", "drivers";)

но блин я же не могу всё это 1 командой сделать или могу?

Ответить

Номер ответа: 4
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #4
Добавлено: 15.10.06 22:53
Вот как раз примерчик с каталогами.

Option Strict On

Imports System.IO

Class DirectoryTreeView
    Inherits TreeView

    ' This is the Class constructor.
    Public Sub New()
        ' Make a little more room for long directory names.
        Me.Width *= 2

        ' Get images for tree.
        Me.ImageList = New ImageList()
        With Me.ImageList.Images
            .Add(New Bitmap("..\ExplorerStyleViewer\35FLOPPY.BMP";))
            .Add(New Bitmap("..\ExplorerStyleViewer\CLSDFOLD.BMP";))
            .Add(New Bitmap("..\ExplorerStyleViewer\OPENFOLD.BMP";))
        End With

        ' Construct tree.
        RefreshTree()
    End Sub

    ' Handles the BeforeExpand event for the subclassed TreeView. See further
    ' comments about the Before_____ and After_______ TreeView event pairs in
    ' /DirectoryScanner/DirectoryScanner.vb.
    Protected Overrides Sub OnBeforeExpand(ByVal tvcea As TreeViewCancelEventArgs)
        MyBase.OnBeforeExpand(tvcea)

        ' For performance reasons and to avoid TreeView "flickering" during an
        ' large node update, it is best to wrap the update code in BeginUpdate...
        ' EndUpdate statements.
        Me.BeginUpdate()

        Dim tn As TreeNode
        ' Add child nodes for each child node in the node clicked by the user.
        ' For performance reasons each node in the DirectoryTreeView
        ' contains only the next level of child nodes in order to display the + sign
        ' to indicate whether the user can expand the node. So when the user expands
        ' a node, in order for the + sign to be appropriately displayed for the next
        ' level of child nodes, *their* child nodes have to be added.
        For Each tn In tvcea.Node.Nodes
            AddDirectories(tn)
        Next tn

        Me.EndUpdate()
    End Sub

    ' This subroutine is used to add a child node for every directory under its
    ' parent node, which is passed as an argument. See further comments in the
    ' OnBeforeExpand event handler.
    Sub AddDirectories(ByVal tn As TreeNode)
        tn.Nodes.Clear()

        Dim strPath As String = tn.FullPath
        Dim diDirectory As New DirectoryInfo(strPath)
        Dim adiDirectories() As DirectoryInfo

        Try
            ' Get an array of all sub-directories as DirectoryInfo objects.
            adiDirectories = diDirectory.GetDirectories()
        Catch exp As Exception
            Exit Sub
        End Try

        Dim di As DirectoryInfo
        For Each di In adiDirectories
            ' Create a child node for every sub-directory, passing in the directory
            ' name and the images its node will use.
            Dim tnDir As New TreeNode(di.Name, 1, 2)
            ' Add the new child node to the parent node.
            tn.Nodes.Add(tnDir)

            ' We could now fill up the whole tree by recursively calling
            ' AddDirectories():
            '
            '   AddDirectories(tnDir)
            '
            ' This is way too slow, however. Give it a try!
        Next
    End Sub

    ' This subroutine clears out the existing TreeNode objects and rebuilds the
    ' DirectoryTreeView, showing the logical drives.
    Public Sub RefreshTree()

        ' For performance reasons and to avoid TreeView "flickering" during an
        ' large node update, it is best to wrap the update code in BeginUpdate...
        ' EndUpdate statements.
        BeginUpdate()

        Nodes.Clear()

        ' Make disk drives the root nodes.
        Dim astrDrives As String() = Directory.GetLogicalDrives()

        Dim strDrive As String
        For Each strDrive In astrDrives
            Dim tnDrive As New TreeNode(strDrive, 0, 0)
            Nodes.Add(tnDrive)
            AddDirectories(tnDrive)

            ' Set the C drive as the default selection.
            If strDrive = "C:\" Then
                Me.SelectedNode = tnDrive
            End If
        Next

        EndUpdate()
    End Sub
End Class

Ответить

Номер ответа: 5
Автор ответа:
 Oloth Teken'duis



Вопросов: 2
Ответов: 7
 Профиль | | #5 Добавлено: 15.10.06 23:14
большое спасибо. я фигею просто, должен признать, что я не разбираюсь в VB.NET абсолютно.
это не VB6 и даже на него не похоже...

большое спасибо!

Ответить

Номер ответа: 6
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #6 Добавлено: 15.10.06 23:16
почитай про объект ТриВью В МСДН
Там можно всё узнать
1 на каком уровне ты находишься
2 как зовут твою ветку, её родителей, бабку пробабку, детей и внуков
Успехов

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам