Moi,
Olen tässä koittanut saada toimimaan multiselectiä treeviewssä, koska .NET framework ei sitä tue alkuperäisenä. Löysin netistä C# koodipätkän valmiina, jolla tuo kyseinen ominaisuus toteutetaan: (http://www.codeproject.com/Articles/20581/
Löysin kyseisestä projektista käännetyn version VB.NET:ille (oma projektini on kirjoitettu VB.NETillä). Uusi Treeview toimii muuten hyvin, mutta valittaessa ylin node (eli nodella ei ole parentia) tulee exception: "Object reference not set to an instance of an object", jonka uskon johtuvan siitä, että viitataan parenttiin, joka on null.
Tässä kohta, jossa exception tulee:
Dim ndStart As TreeNode = m_SelectedNode Dim ndEnd As TreeNode = node If ndStart.Parent.Equals(ndEnd.Parent) Then
Tässä sama kohta C#:
TreeNode ndStart = m_SelectedNode; TreeNode ndEnd = node; if( ndStart.Parent == ndEnd.Parent )
Olisiko tähän jotain viisasta ratkaisua kiertää tuo exception? Miksi C#:ssa ei tuota exceptionia tule?
Voinko tehdä tuon controllin vb.net projektiin C#:lla ja pitää projektini kielenä silti vb.net vai olisiko viisaampaa muutenkin vaihtaa VB.NETistä C#:iin, koska vaikuttaisi että noita valmiita esimerkkejä löytyisi enemmän C#:na?
Tämä tarkastaa onko olio sama:
if ndStart.Parent == ndEnd.Parent Then
Tämä tarkastaa onko referenssi sama:
if ndStart.Parent is ndEnd.Parent Then
Tämä tarkastaa onko olioiden sisältö sama:
If ndStart.Parent.Equals(ndEnd.Parent) Then
(Korjatkaa jos muistan väärin)
Vaihdoin Equals -> Is, niin nyt toimii kuten pitääkin, eikä herjaa mitään.
Kiitoksia avusta ja noista selityksistä!
Aihe on jo aika vanha, joten et voi enää vastata siihen.