PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Visual Basic - Zufälligen ListBox Eintrag ausgeben


Geldmann3
2010-11-07, 19:19:51
Hallo,
Kann mir jemand erklären, wie ich es am besten anstelle einen zufälligen ListBox Eintrag in der Message Box auszugeben.
Also so, dass man einen Button klickt und dann ein zufälliger Eintrag aus der ListBox in der Message Box erscheint.

Monger
2010-11-07, 19:29:59
In Kurzform:

- erst alle Items aus Listbox rausholen
- größten Index ermitteln (Count)
- Zufallszahl holen:
dim r as new Random
Dim zufälligerIndex = r.Next(Count)
Dim zufälligesItem = liste.Item(zufälligerIndex)
- Das so geholte Item in eine Textbox schreiben

PatkIllA
2010-11-07, 19:41:23
Anzahl und indexbasierten Zugriff kriegt man auch ohne vorher alle Items auszulesen. Sowohl in Forms als auch WPF.

Geldmann3
2010-11-07, 21:16:37
Eine Zufallszahl zu ermitteln bekomme ich noch hin. Und die Gesamtzahl der Items muss ich nicht ermitteln, da die bereits feststeht und sich nicht ändert. Nur wie bekomme ich es mit Visual Basic hin, dass das Zufällige Item in einer Textbox ausgegeben wird. Wie mache ich aus der Zufallszahl ein zufallsItem?

Angenommen ich habe 3
Item1
Item2
Item3

PatkIllA
2010-11-07, 21:23:38
Dim item As Object = listbox.Items.Item(zufallszahl) müsste das sein, wenn ich die VB Syntax richtige hinbekomme.

Und was denn nu TextBox oder MessageBox? Forms oder WPF?

Geldmann3
2010-11-07, 21:25:20
Danke, habs schon hinbekommen
Wechselt immer wenn ich die Auswahl wechsle, das kann ich nun auch auf einen Button anwenden (;
Public Class Form1

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
' Zufallszahlengenerator initialisieren
Randomize()

Dim zufälligerIndex = Int(3 * Rnd()) + 1
Dim zufälligesItem = ListBox1.Items(zufälligerIndex)
MsgBox("Das Item ist" + zufälligesItem)
End Sub
End Class

RattuS
2010-11-07, 22:16:06
Auflistungen starten beim Index 0. Deine zufällige Zahl ist aber immer >= 1. Oder ist das Absicht?

Der Stabilität halber solltest du prüfen, ob die zufällige Zahl nicht größer als die Anzahl der Elemente in der Auflistung der ListBox ist

If zufälligerIndex < ListBox1.Items.Count Then
MsgBox("Das Item ist " + zufälligesItem.ToString())
End If

bzw. solltest du die zufällige Zahl mit

Dim zufälligerIndex = Int(ListBox1.Items.Count * Rnd())

generieren, damit du auch eine variable Anzahl an Items in deiner ListBox haben kannst. ;)

PS: Es wäre sauberer, wenn du deine Variablen mit Typen deklarierst.