🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #10040

Re: Zachowanie stanu w TreeView

#10040
From: Tomasz Muszyński
Date: Wed, 16 Nov 2005 23:34
35 lines
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-mail
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>

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