Es gäbe sehr viele Möglichkeiten. Zuerst musst man die Daten aber verfügbar machen, da bietet sich eine Datei mit Xml an (man will das Programm nicht immer umschreiben für neue Witze). Sowas könnte im einfachen Fall so aussehen
<?xml version="1.0" encoding="utf-8"?>
<Witze>
<Witz>
<Kategorie>Autos</Kategorie>
<Text>Ein Mann fährt mit seinem Wagen...</Text>
</Witz>
<Witz>
<Kategorie>Blondinen</Kategorie>
<Text>Eine Blondine fährt mit ihrem Wagen...</Text>
</Witz>
<Witz>
<Kategorie>Autos</Kategorie>
<Text>Ein Mann fährt wieder mit seinem Wagen...</Text>
</Witz>
<Witz>
<Kategorie>Blondinen</Kategorie>
<Text>Noch eine Blondine fährt mit ihrem Wagen...</Text>
</Witz>
</Witze> (muss man diese Datei als UTF8 abspeichern im Notepad).
Dann brauchen wir in einer Form eine ComboBox, eine TextBox und einen Button.
In Form_Load() lesen wir die Daten ein
Dim bs1 As BindingSource
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
Dim ds As New DataSet
ds.ReadXml("F:\TestDaten\Witze.xml") mit einem BindingSource können wir die Daten bequem filtern
bs1 = New BindingSource(ds, "Witz") jetzt bauen wir eine Liste mit den Kategorien
Dim kategorien As New List(Of String)
For Each dr As DataRow In ds.Tables("Witz").Rows
Dim k As String = dr("Kategorie")
If Not kategorien.Contains(k) Then
kategorien.Add(k)
End If
Next
kategorien.Sort() und binden die Liste mit der Combo
ComboBox1.DataSource = kategorien
End Sub (Form_Load() ist damit fertig). Wenn eine Kategorie ausgewählt wird setzen wir ein Filter für diese Kategorie
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
bs1.Filter = "Kategorie='" & ComboBox1.Text & "'"
End Sub und dann beim Buttonklick holen wir zufallsartig den Text für einen Witz aus dieser Kategorie
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Dim idx As Integer = Int(Rnd() * bs1.Count)
TextBox1.Text = bs1(idx)("Text")
End Sub Das wäre immerhin eine einfache Lösung.
________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist |