none
怎麼樣讓 ListView 所點選的項目(資料夾), TreeView 自動選取與ListView名稱相同的項目呢? RRS feed

  • 問題

  • 想請教各位大大

    小弟有個問題

    在 ListView 所點選的項目(資料夾),怎麼樣可使 TreeView 自動選取與ListView名稱相同的項目呢?

    如ListBox 有 SetSelected 可以使用,在TreeView、ListView 裡面都找不到相關的指令

    請問要怎麼做呢? 謝謝!

     

     

    2011年1月25日 下午 04:02

解答

  • 可以用

    [TreeNodeCollection.Find 方法 ]

    TreeView1.SelectedNode =TreeView1.Nodes.Find(節點名稱, 是否向下巢狀搜尋)

    要用這個方法的話, 你在建立每一個TreeNode時, 都必須給予該Node一個獨一的辨識名稱


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 tle-Bee 2011年1月28日 上午 10:23
    2011年1月26日 上午 08:40
    版主
  • 建議您看看此文

    HOW TO:逐一查看 Windows Form TreeView 控制項的所有節點

    http://msdn.microsoft.com/zh-tw/library/wwc698z7.aspx


    歡迎參觀我的Blog.NET菜鳥自救會
    • 已標示為解答 tle-Bee 2011年1月28日 上午 10:24
    2011年1月26日 下午 03:22
    版主
  • 先解決設定 TreeNode.Name 的問題
    在這個地方
             aNode = New TreeNode(subDir.Name, 0, 0)
             aNode.Tag = subDir

    加一條

       aNode.Name =...... <--你要想個編碼方式讓這些treeNode Name都不一樣, 才能當Key值查詢


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 tle-Bee 2011年1月28日 上午 10:23
    2011年1月27日 下午 02:25
    版主

所有回覆

  • 試看看這有沒有幫助

    [逐步解說:使用設計工具以 ListView 和 TreeView 控制項建立檔案總管風格的介面 ]

    文章下方還有一些連結也請一併參考


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年1月25日 下午 07:29
    版主
  • TreeView.SelectedNode 屬性 : 取得或設定目前在樹狀檢視控制項中選取的樹狀節點。

    http://msdn.microsoft.com/zh-tw/library/system.windows.forms.treeview.selectednode(v=vs.80).aspx

    ListViewItem.Selected 屬性 : 取得或設定值,指出項目是否已選取。

    http://msdn.microsoft.com/zh-tw/library/system.windows.forms.listviewitem.selected.aspx

     


    歡迎參觀我的Blog.NET菜鳥自救會
    2011年1月26日 上午 01:17
    版主
  • 辛苦兩位大大幫我解答(鞠躬)

    不過想請問一下如果資料夾內有資料夾~~一直延伸下去....TreeView 這樣這個指令就無法使用TreeView1.SelectedNode = TreeView1.Nodes().Nodes().Nodes()

    有什麼方法可以解決?   謝謝!

    只差這個功能  "讓TreeView被選取"

     

     

     

    2011年1月26日 上午 08:12
  • 可以用

    [TreeNodeCollection.Find 方法 ]

    TreeView1.SelectedNode =TreeView1.Nodes.Find(節點名稱, 是否向下巢狀搜尋)

    要用這個方法的話, 你在建立每一個TreeNode時, 都必須給予該Node一個獨一的辨識名稱


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 tle-Bee 2011年1月28日 上午 10:23
    2011年1月26日 上午 08:40
    版主
  • 試了好久...好難,有範例可以看嗎?  麻煩了,感謝!

    TreeNodeCollection.Find 這個要怎麼用?

    你說: 要用這個方法的話, 你在建立每一個TreeNode時, 都必須給予該Node一個獨一的辨識名稱 。

    這是什麼意思? 不懂,可以詳細解說嗎?

     

     

    2011年1月26日 上午 09:56
  • 先把你建TreeView的程式貼上來, 比較好說明

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年1月26日 上午 10:10
    版主
  • 建議您看看此文

    HOW TO:逐一查看 Windows Form TreeView 控制項的所有節點

    http://msdn.microsoft.com/zh-tw/library/wwc698z7.aspx


    歡迎參觀我的Blog.NET菜鳥自救會
    • 已標示為解答 tle-Bee 2011年1月28日 上午 10:24
    2011年1月26日 下午 03:22
    版主
  • Private Sub MyTree()

            Dim TreeRootNode As TreeNode    
            Dim DiriInfo As New DirectoryInfo("C:\")
            TreeRootNode = New TreeNode(DiriInfo.Name)
            TreeRootNode.Tag = DiriInfo
            TreeView1.Nodes.Add(TreeRootNode) 
            GetDir(DiriInfo.GetDirectories(), TreeRootNode)

    End Sub

    Private Sub GetDir(ByVal SubDirs() As DirectoryInfo, ByVal NodeToAddTo As TreeNode)

            Dim aNode As TreeNode
            Dim MysubDirs() As DirectoryInfo = Nothing
            For Each subDir As DirectoryInfo In SubDirs
                aNode = New TreeNode(subDir.Name, 0, 0)
                aNode.Tag = subDir
                Try
                    MysubDirs = subDir.GetDirectories
                Catch ex As UnauthorizedAccessException
                    
                End Try
                If MysubDirs.Length <> 0 Then GetDir(MysubDirs, aNode)
                NodeToAddTo.Nodes.Add(aNode)    
            Next

        End Sub

    Private Sub ListView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.DoubleClick

    這邊用了 TreeNodeCollection.Find  和  "若要逐一查看 TreeView 控制項的所有節點"  這篇文章這兩個方法都用了,搞了好久...還是搞不出來

    有寫了

    Dim LView As String
    ' ListView 點選資料夾 
    LView = ListView1.SelectedItems(0).Text

    TreeView1.SelectedNode.Toggle()
    Dim NodeTF As Boolean = False
    Dim RootK As Integer = 0
    For Each Nodes As TreeNode In TreeView1.Nodes
        For Each RootNode As TreeNode In Nodes.Nodes
            System.Diagnostics.Debug.WriteLine(RootNode.Text)

            If TreeView1.SelectedNode.IsSelected Then
                If TreeView1.SelectedNode.IsExpanded Then
                    If RootNode.Text = LView Then
                        TreeView1.SelectedNode = Nodes.TreeView.SelectedNode.Nodes(RootK)
                        TreeView1.Focus()
                        NodeTF = True
                        Exit For
                    End If
                    RootK += 1
                Else
                    TreeView1.SelectedNode.Toggle()
                    If RootNode.Text = LView Then
                        TreeView1.SelectedNode = Nodes.TreeView.SelectedNode.Nodes(RootK)
                        TreeView1.Focus()
                        NodeTF = True
                        Exit For
                    End If
                    RootK += 1
                End If
            End If
        Next
        If NodeTF = True Then Exit For
    Next

    End Sub

    可是只能搜尋到"主節點的第一層副節點, 另外我在ListView上所選取的資料夾名稱,TreeView也可自動選取並反白。
    但只要再往下一層那就搜尋不到了,TreeView也部會自動反白.... 

    上網找文章好像都沒有人這樣做過,也沒有範例可以參考

    有範例嗎?  T . T

    想要的功能就像在電腦上面資料夾那功能一樣,左邊點選資料夾開啟,右邊TreeView 自動選取





    謝謝大大們幫我解答這個問題


    2011年1月27日 下午 12:35
  • 先解決設定 TreeNode.Name 的問題
    在這個地方
             aNode = New TreeNode(subDir.Name, 0, 0)
             aNode.Tag = subDir

    加一條

       aNode.Name =...... <--你要想個編碼方式讓這些treeNode Name都不一樣, 才能當Key值查詢


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 tle-Bee 2011年1月28日 上午 10:23
    2011年1月27日 下午 02:25
    版主
  • 原來是這樣....真是太感謝了!

    :)

    有做出來了!

    2011年1月28日 上午 08:46