Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB.NET] Multiselect Treeview ongelma

Physix [02.07.2012 14:42:40]

#

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/Multiselect-Treeview-Implementation) C#:lla tuo projekti toimi kuten pitikin/halusin.

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?

groovyb [02.07.2012 15:01:25]

#

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)

Physix [02.07.2012 15:30:24]

#

Vaihdoin Equals -> Is, niin nyt toimii kuten pitääkin, eikä herjaa mitään.
Kiitoksia avusta ja noista selityksistä!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta