28. september 2008 - 01:00Der er
9 kommentarer og 1 løsning
Problemer med ListBox - SelectedIdex
Hej Eksperter.
Jeg har et lille problem. Jeg har en database, som jeg henter ting ud af og så har jeg oprettet en klasse til at håndtere de ting der bliver hentet ud og returnere navnet, så det er navnet der bliver vist i min ListBox. Når jeg så vælger et punkt på min ListBox skriver den alle de tilhørende værdier i nogle andre felter.
Det lyder meget kompliceret, men det er det ikke. Her er et eksempel.: Oprettelse af ListBox:
Mit problem er så, at jeg har et filter på så der kan sorteres i min item, men når jeg gør det, så ændre indexeringen sig og den viser de forkerte ting til det item man har valgt.
Mit filter ser således ud.: Private Sub Sort(ByVal Str As String) lb_clothes.Items.Clear() ListBoxClone.Items.Clear()
For Each MyItem In ClothesArray
If MyItem.ToString.StartsWith(Str) Then lb_clothes.Items.Add(MyItem.ToString) ElseIf Str = "" Then lb_clothes.Items.Add(MyItem.ToString) End If
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Det virker fint når du tilføjer elementerne i din ClothesArray til listboxen i samme rækkefølge som de ligger i arrayet, for derved er indexeringen det samme i både array'et og i listboxen. Problemet opstår når du blander indicerne fra ClothesArray og tilføjer dem i listboxen, som derved tror er indicerne stadig går 1, 2, ..., antalIndicer.
For at holde styr på hvilke elementer du har arbejder med, bliver du nød til at have en unique identifier eller key-value. Et unikt tal til hver stykke tøj ville løse problemet, da ville du, når brugeren trykke på et stykke tøj, kunne spørge din ClothesArray: "Må jeg bede om det stykke tøj med id: xxxx".
The .net framework contains several collections, the one that you're looking for is one that can contain a key and value, of types defined by you - you're looking for a collection with generic types.
The one that is properly best suited for your needs is the Dictionary collection found in [Collections.Generic.Dictionary]. When you create a variable of type Dictionary you get to define which type the key should be of, and likewise which type the value should be of.
An example of it's use:
Dim ExDict As New Dictionary(Of Integer, String) ExDict.Add(2, "StringValueStoredInIntegerWithKeyValueOfTwo") Debug.Print(ExDict(2).ToString) 'Would assert: StringValueStoredInIntegerWithKeyValueOfTwo
Jeg har ikke lige mulighed for at teste det lige pt. mit projekt ligger på min stationær og den har jeg lige upgraderet. Havde dog ikke lige kalkuleret med at jeg skulle have ny PSU, for der er kommet nye powerplugs, så jeg henter først min PSU o morgen.
Jeg skal nok teste det så hurtigt jeg kan.
Foreløbig tak for hjælpen.
'mcardle
P.S. Læste vidst noget om emnet i går i min C# bog... Har ikke helt valgt sprog endnu.
Hvis du står overfor valget mellem C# og VB, så ville jeg sige at du skal hoppe på den syntax du holder mest af. Hvis du vælger C#, så vil du have den fordel at du vil have nemmere ved at skifte til sprog derived fra C-stammen såsom c++, java ect, hvilket kan være en fordel. De bygger dog begge på .NET framework, og derved er de næsten helt ens.
VB skjuler generelt meget information for slutbrugeren, da det oprindeligt var et sprog udviklet til at være et hurtigt udviklingssprog. I forhold til C++ er det stadig sådan er det ville tage 10x så lang tid at bygge det samme som i VB, men tradeoff er at du mister meget af kontrollen med hvad der sker.
Hvis du kommer fra et PHP-miljø, ville jeg nok vælge at holde mig til C#. Generelt vil du finde flere tutorials, artikler o.l. i C#, og du vil i mange kredse blive taget mere seriøst hvis du kommer daldrende i C# i stedet for VB.net.
Nå, men hvor hyggeligt det end er, så er min computer vækket til live igen, dog med den mindre ting, at den har valg ikke at kunne bruge min IDE harddisk.
Anyways, hvis du smider et svar får du nogle point. Så må jeg bygge projektet igen og vende tilbage om det virkede. :o)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.