Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: [vb.net] Listbox; If tieto(i) = valittu then

novice [13.01.2009 21:46:16]

#

Eli miten saan tietoon, onko listboxin jokin tietty vaihtoehto valittuna.

Esim tällainen pitäisi jotenkin toteuttaa...

for i = 0 to valittujen määrä
     if listbox1.vaihtoehto(i) = valittu then
          muuttuja(i,2) = jotain
     else
          muuttuja(i,2) = jotain muuta
     end if
next i

vesimies [13.01.2009 23:02:40]

#

Sovella jotain näistä ListBoxin ominaisuuksista tilanteen mukaan:

SelectedIndex
SelectedIndexCollection
SelectedIndices
SelectedItem
SelectedItems
SelectedObjectCollection
SelectedValue

novice [13.01.2009 23:56:27]

#

Olen jumissa...
Listboxissa 30 vaihtoehtoa ja niistä 6 valittuna. miten voin tarkistaa, että onko vaihtoehto nro.11 valittuna. Vastauksena luonnollisesti True/False.

Saatampa olla myös liian väsynyt kun ei nyt leikkaa yhtään...

vesimies [14.01.2009 00:14:31]

#

Dim onSe As Boolean = ListBox1.SelectedIndices.Contains(11)

Kertoo onko indeksillä 11 listassa oleva alkio (eli 12. alkio) valittujen joukossa.

neau33 [14.01.2009 02:32:22]

#

Moikka novice!

sinulla oli himan häikkää lähtöajatuksessa...

for i = 0 to valittujen määrä ' -- 0 to SelectedIndices.Count
'eli yksi liikaa...jos valittujen määrä on vaikkapa 7 ja lähdetään
'liikkeelle 0:sta niin lause näyttäisi seuraavalta...

For i = 0 To 6  ' -- 0 To SelectedIndices.Count - 1
'testaa vaikkapa näinpäin...
Sub Aliohjelma()

   If Not Funktio(ListBox1) Is Nothing Then

      Dim xjuttu As Object = Funktio(ListBox1)

      Dim InfoStr As String = ""

      For i As Integer = 0 To xjuttu.GetUpperBound(1)
         'If xjuttu(2, i) Then 'esim.
            InfoStr += _
            xjuttu(0, i).ToString + " (" + _
            xjuttu(1, i).ToString + ") " + _
            xjuttu(2, i).ToString + _
            Environment.NewLine + Environment.NewLine
         'End If
      Next

      MsgBox(InfoStr): InfoStr = Nothing
      xjuttu = Nothing

   End If

End Sub

Function Funktio(ByVal boxi As Object) As Object

   If Not TypeOf(Boxi) Is listBox Then
      Return Nothing: Exit Function
   ElseIf boxi.Items.Count = 0 Then
      Return Nothing: Exit Function
   End If

   Dim muuttuja(2, boxi.Items.Count -1) As Object

   For i As Integer =  0 To boxi.Items.Count -1

      muuttuja(0, i) = Cstr(i + 1) + "."
      muuttuja(1, i) = i

      If boxi.SelectedIndices.Contains(i) Then
         muuttuja(2, i) = True
      Else
         muuttuja(2, i) = False
      End If

   Next

   Return muuttuja: muuttuja = Nothing

End Function

novice [14.01.2009 10:58:20]

#

Kiitokset vastauksista. Etenkin tuo .Contains(i) oli hukassa. Enkä osannut ajatella, että ehtolauseen voisi rakentaa ilman vertailuoperaattoria.

Kyllähän tämä nyt aamulla tuntuu paljonkin selkeämmältä ;)

Vastaus

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

Tietoa sivustosta