Springen naar inhoud


- - - - -
VS 2012

Bepaalde Waarden Uit Listbox Halen

Visual Basic 2012

  • Log in a.u.b. om te beantwoorden
Er zijn 5 reacties in dit onderwerp

#1 ludo64

ludo64

    Rookie Developer

  • Leden
  • Pip
  • 30 berichten
    Laatst bezocht 25 jul 2019 15:42
  • LocatieTongeren

Geplaatst op 24 juni 2019 - 16:42

Hallo,
Ik heb een Listbox met een 50-tal Amerikaanse staten.
Nu moet ik alleen degene die beginnen met "New" eruit halen (dat zijn er ongeveer 4).
Tot nu toe is het me gelukt "New York" eruit te halen (een 50-tal keer), maar niet de andere.
Wat is er mis met deze code ?
Visual Basic Code:
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click

For i = 0 To ListBox1.Items.Count - 1
ListBox1.SelectedIndex = ListBox1.FindString("New")
ListBox2.Items.Add(ListBox1.SelectedItem)
Next

End Sub


#2 Hansiebebe

Hansiebebe

    Professional Developer

  • Leden
  • PipPipPipPip
  • 329 berichten
    Laatst bezocht 11 sep 2019 09:29

Geplaatst op 25 juni 2019 - 21:02

Ik kan het niet testen maar ik denk dat je zoiets zoekt


Visual Basic Code:
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click

For i = 0 To ListBox1.Items.Count - 1
		 If ListBox1.Items(i).ToString.Contains("New") Then
			 ListBox2.Items.Add(ListBox1.Items(i))
		 End If
Next

End Sub



#3 ludo64

ludo64

    Rookie Developer

  • Leden
  • Pip
  • 30 berichten
    Laatst bezocht 25 jul 2019 15:42
  • LocatieTongeren

Geplaatst op 25 juni 2019 - 21:25

Thx Hansiebebe, weeral wat bijgeleerd :smile:

#4 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1163 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 26 juni 2019 - 08:42

Bericht bekijkenHansiebebe, op 25 juni 2019 - 21:02, zei:

Ik kan het niet testen maar ik denk dat je zoiets zoekt


Visual Basic Code:
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click

For i = 0 To ListBox1.Items.Count - 1
		 If ListBox1.Items(i).ToString.Contains("New") Then
			 ListBox2.Items.Add(ListBox1.Items(i))
		 End If
Next

End Sub



Of met Linq
Visual Basic Code:
ListBox2.Items.AddRange(ListBox1.Items.
	 Cast(Of String).
	 Where(Function(s) s.StartsWith("New")).
		 ToArray)


Indien je de query syntax prefereert:
Visual Basic Code:
Dim query = From state In ListBox1.Items
		 Where state.ToString.StartsWith("New")
	 		 Select state
ListBox2.Items.AddRange(query.ToArray)

Cast(Of) bestaat niet in query syntax en ToArray ook niet, dus vandaar de .ToString (of DirectCast, of CType) en de .ToArray

#5 ludo64

ludo64

    Rookie Developer

  • Leden
  • Pip
  • 30 berichten
    Laatst bezocht 25 jul 2019 15:42
  • LocatieTongeren

Geplaatst op 26 juni 2019 - 08:55

Thx voor de uitleg Dirk, maar zo ver ben ik nog niet (Linq).

#6 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1163 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 26 juni 2019 - 08:56

Bericht bekijkenludo64, op 25 juni 2019 - 21:25, zei:

Thx Hansiebebe, weeral wat bijgeleerd :smile:

Er is nog iets wat ik denk dat belangrijk is dat iemand je dat zo snel mogelijk vertelt:
Gebruik je controls NIET als dataopslag.
Gebruik een generieke collectie en werk daar op.
Gebruik de collectie om de control de gegevens te laten tonen.
Visual Basic Code:
		Dim states As New List(Of String)(
			{"Colorado", "Montana", "New Hampshire", "Texas", "North Carolina", "New York"})

		ListBox1.DataSource = states

		ListBox2.DataSource = states.
							  Where(Function(s) s.StartsWith("New")).
							  OrderBy(Function(s) s).
							  ToList







Ook met taq VS 2012, Visual Basic 2012 voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[VS 2012] Untitled 1

Met dank aan J├╝rgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)