[.NET] TreeView三態 + Directory Explorer

作者: KawasumiMai (さあ、死ぬがいい)   2014-06-07 17:48:09
如題
好久沒碰.net了...
目前正在嘗試先用TreeView作目錄
並且將CheckBox的屬性打開讓他可以被勾選
但是遇到兩個問題
1.Checkbox只有雙態
網路上找了不少tristate的方法
但是好像都要另外偵測click動作
真的沒有比較簡單的方法嗎?
2.列出所有目錄的動作極度緩慢
印象中VB6時代有個Path的物件
可以馬上作一個檔案瀏覽器
但是不知道為什麼.net查到的檔案瀏覽器需要用TreeView去作parse
而且更慘的是他一開始就要持續往下挖子目錄來作出整顆樹
所以光是一開始要打開就很麻煩了
如果只挖一層,add node的時候還要判定該目錄是否有子目錄
所以需要挖兩層才能決定第一層是否可以被展開(有+號)
怎麼會這麼雞肋?難不成是方法用錯了嗎?
有沒有什麼簡單快速的方法可以作出一個很快就能初始化的目錄瀏覽器
而且每個節點都有有三態勾選的選項(決定子目錄裡面是否全被勾選)
作者: GoalBased (Artificail Intelligence)   2014-06-07 19:01:00
什麼叫作三態勾選? 勾和不勾不就兩態嗎?而且treeview會慢嗎? 我是覺得還好,如果真想快,就自己寫不要用.net裡面的吧,不過我自己也是用treeview在做選單,像你說的多層稍為麻煩點,可能我自己用前端寫一個會要改會比較快,不過目前能達到我需求就夠了
作者: KawasumiMai (さあ、死ぬがいい)   2014-06-07 19:17:00
勾 不勾 半勾(方框/灰色) 三態阿第三個是代表子目錄是否全被勾選,這很常見吧?主要不是treeview變慢,而是印象中VB6的工具很快但是Treeview他要一層一層去挖,挖不完阿所以這種東西到了.net真的要自己寫阿= =....
作者: GoalBased (Artificail Intelligence)   2014-06-07 20:16:00
window form有沒有三態的checkbox我不確定但是web原生是沒有的,想要的話要另外做你說的一層一層挖會慢 是因為資料量很大嗎?之後你說的全選,通常都是勾選母node代表子node全選是說你有沒有先google一下 treeview網路上的範例功能都滿強大的,不過我自己是習慣自己刻
作者: Abbee (阿比)   2014-06-08 21:17:00
我覺得win98時代的檔案總管很快,到xp win7就很慢,難怪win7一次也只顯示點選的目錄,建議你學win7
作者: KawasumiMai (さあ、死ぬがいい)   2014-06-09 14:21:00
樓上的情況有想過,但是還沒有解決TriState的問題然後你提到的顯示目錄,不只判定該層,實際上要讓母層顯示+號,就得事先判定是否有下一層了....再加上那個NodeMouseClick跟After/BeforeClick....前者甚至包含勾選的動作也算,整個就很雞肋...
作者: GoalBased (Artificail Intelligence)   2014-06-09 21:23:00
tri 就自己做,想簡單點就用下拉選單判斷有下層會怎樣嗎? 就算幾百個節點對速度也沒有影響吧

Links booklink

Contact Us: admin [ a t ] ucptt.com