Article View: alt.pl.comp.lang.csharp
Article #10040Re: Zachowanie stanu w TreeView
From: Tomasz Muszyński
Date: Wed, 16 Nov 2005 23:34
Date: Wed, 16 Nov 2005 23:34
35 lines
2617 bytes
2617 bytes
Wiktor Zychla napisał(a):
>>A czy moglbys "zapodac" jakis kawalek algorytmu z odrobinka funkcji
>>rekurencyjnej do takiego spacerku po TreeView, ktory uwazasz za
>>najbardziej optymalny ( w sensie szybkosci wykonania, z uwzglednieniem
>>przejscia po wszystkich wezlach ) ? Mam w swoim projekcie pare tysiakow
>>wezlow, i wolalbym nie robic z tego fragmentu kodu "piety Achillesa".
>>Strasznie bys mi pomogl.
>
>
> nie musisz chodzić po wszystkich węzłach drzewa, tylko po wszystkich węzłach
> danego poziomu. nawet jak drzewo jest duże, to jeden poziom nie powinien
> mieć zbyt dużo węzłów. funkcja nie jest rekurencyjna, zwykły for.
>
> Wiktor Zychla
>
> public static void TreeNode_FindAndSelectNode( TreeView treeView, string
> nodePath )
> {
...
> }
A ja za to robię sobie HashTable do wszystkich węzłów drzewa i wtedy
bardzo szybko moge znaleźć interesujący mnie węzeł - oczywiście
potrzebny jest jakiś klucz, np guid albo primary key.
Wydanie Expand() na najbardziej zagnieżdżonym węźle powinno otworzyć
wszystkie pośrednie węzły (nie sprawdzałem), ale jeśli tego nie robi to
łatwo w pętelce będzie przejść po wszystkich nadrzędnych węzłach.
Szybciej już chyba się nie da :)
Jeśli chcesz zapamiętać otwarte węzły to można przy evencie OnExpand
mozna dodawać takie węzły do innej HashTable a OnCollapse usuwać je -
nie jest to jednak konieczne, bo z HashTable wszystkich węzłów łatwo
przejść po wszystkich i sprawdzić, który jest otwarty.
tm
Technical Details
Message-ID:
<dlgfp1$eqo$1@nemesis.news.tpi.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mailReferences:
<dlf3ot$gkm$1@inews.gazeta.pl> <dlf5vq$ahk$1@nemesis.news.tpi.pl> <dlg7sm$mf5$1@inews.gazeta.pl> <dlgcmv$4tr$1@atlantis.news.tpi.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail From: Tomasz Muszyński <thom_ek@op.pl_nospam> Newsgroups: alt.pl.comp.lang.csharp Subject: Re: Zachowanie stanu w TreeView Date: Thu, 17 Nov 2005 00:34:41 +0100 Organization: tp.internet - http://www.tpi.pl/ Lines: 35 Message-ID: <dlgfp1$eqo$1@nemesis.news.tpi.pl> References: <dlf3ot$gkm$1@inews.gazeta.pl> <dlf5vq$ahk$1@nemesis.news.tpi.pl> <dlg7sm$mf5$1@inews.gazeta.pl> <dlgcmv$4tr$1@atlantis.news.tpi.pl> NNTP-Posting-Host: dnd41.neoplus.adsl.tpnet.pl Mime-Version: 1.0 X-Trace: nemesis.news.tpi.pl 1132184161 15192 83.24.85.41 (16 Nov 2005 23:36:01 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Wed, 16 Nov 2005 23:36:01 +0000 (UTC) User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317) X-Accept-Language: pl, en-us, en In-Reply-To: <dlgcmv$4tr$1@atlantis.news.tpi.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit