ListBox-Problem

Thyrfing

Grünschnabel
Hallo!

Hab ein Problem mit meinem Projekt. Wäre schön, wenn mir jemand weiterhelfen kann.

In meinem Projekt soll man mittels Buttons von A-Z sich etwas aussuchen können. Z.B klickt man auf "B", dann werden in LstBox 1 alle Einträge mit "B" aufgezeigt.

Jetzt wählt man z.B. "Benzin". In einer zweiten LstBox wird nun "Super", "Diesel" und "Superplus" angezeigt. Bei der Auswahl, entweder in LstBox1 oder 2, soll dann in einem Textfeld eine best. Meldung erscheinen.

Mein Problem ist folgendes: bei der Auswahl "B" wird in ListBox1 alles korrekt angezeigt. Auch in ListBox2, falls bei 1 eine Mehrfachauswahl möglich ist.

Wenn nun aber ein anderer Buchstabe, z.B. "C" ausgewählt wir, erscheinen trotzdem die Einträge von "B".

Hm. Blöd zu erklären irgendwie, aber vielleicht kann mir trotzdem jemand weiterhelfen.

Schönen Gruß

Jochen
 
Hi.

Wenn du auf den "B" Button drückst, findet er dann nur die Einträge der ListBox die mit "B" anfangen (zB Benzin) oder auch Einträge die ein B enthalten (zB sauber).

Grüße
 
Hi.

@Thyrfing: Das ist wirklich schwer zu beantworten nach deiner oberflächlichen Beschreibung (zumal keine Frage in deinem Text enthalten ist).

Vermutlich hast du vergessen Listbox2 wieder zu löschen (Listbox2.Clear) bevor ein anderer Button gedrückt wird.

Wenn das nicht zutrifft, mußt du schon mal deinen Code zeigen.

Gruß
 
Hallo!
Also... ertsmal Danke für eure Antworten. Sorry, wenn es mit dem Sprit missverständlich formuliert war. Aber ich bin neu hier. Und ziemlich neu in VB... ;-)

Es soll ein Prog werden, wo man sich best. Krankheiten aus einer Liste aussuchen kann und in einer Textbox passende Medikamente und deren Menge angezeigt werden.

Also man klickt z.B. auf Button "K", und aus LstBox1 sucht man sich "Kopfweh" aus, in Listbox2 gibt es zusätzlich "Stechend" und "Bohrend" zur Auswahl. Man wählt "stechend". Dann wird in lbl1 "Aspirin" angezeigt und in lbl2 "54 Stück".
Also... nur als Beispiel... ;-)


Im folgenden poste ich einfach mal den Code, wie er bis jetzt steht.

Public Class Proj1

Dim M01 = "Aspirin" 'die verfügbaren Arzneistoffe
Dim M02 = "Opium"
Dim M03 = "Paracetamol"
...
Dim M24 = "Zinksalbe"

Dim Men5 As String = " 5 Stück" 'Mengenangaben
Dim Men7 As String = " 7 Stück"
...

'Dim ListBox1, ListBox2, lblStoffe1, lblStoffe2, lblMenge1, lblMenge2, lblHinweis, lblWarn

'********************************************************************************** Button A
'Füllen der Krankheitsbox "ListBox1" durch Button-Klick
Private Sub ButtonA_Click()
With ListBox1.Items
.Add("A-Krankheit X")
.Add("A-Krankheit Y")
.Add("A-Krankheit Z")
End With
End Sub

'Auswahl der Listbox1 , Anzeigen der Stoffe und Mengen bzw. der ListBox2
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Select Case ListBox1.SelectedIndex
Case 0
Me.lblStoffe2.Text = M01 & vbCrLf & M05
Me.lblMenge2.Text = Men7 & vbCrLf & Men10
Case 1 'Listbox2 wird aufgerufen
Me.lblStoffe2.Text = ""
Me.lblMenge2.Text = ""
With ListBox2.Items
.Add("bohrend")
.Add("stechend")
.Add("leicht")
End With
End Select
End Sub

'Auswahl in ListBox2 Abs (die Spezifikation eines Eintrags aus ListBox1 ("Bohrend")
Private Sub ListBox2_SelectedIndexChanged_Abs(ByVal sender As System.Object, ByVal e As System.EventArgs)
Select Case ListBox2.SelectedIndex
Case 0
Me.lblStoffe2.Text = M08
Me.lblMenge2.Text = Men20
Case 1
Me.lblStoffe2.Text = M10
Me.lblMenge2.Text = Men20
End Select
End Sub

'Auswahl in ListBox2 Abs (die Spezifikation eines weiteren Eintrags aus ListBox1("stechend")
Private Sub ListBox2_SelectedIndexChanged_Abs(ByVal sender As System.Object, ByVal e As System.EventArgs)
Select Case ListBox2.SelectedIndex
Case 0
Me.lblStoffe2.Text = M08
Me.lblMenge2.Text = Men20
Case 1
Me.lblStoffe2.Text = M10
Me.lblMenge2.Text = Men20
End Select
End Sub
'Ende von "ButtonA". Alle weiteren Buttons werden genauso behandelt.
 
Hi.

Bitte überarbeite erstmal kurz deinen Beitrag und schließe deinen Code in [code=vb]...[/code] Tags ein, dann kann man das viel besser lesen.

Außerdem hatte ich schon gesagt, das du die Listbox erstmal löschen mußt bevor du neue Werte hinzufügst. Du fügst ja immer nur Werte hinzu, das kann ja nicht funktionieren.

Gruß
 
Hallo!
Also... ertsmal Danke für eure Antworten. Sorry, wenn es mit dem Sprit missverständlich formuliert war. Aber ich bin neu hier. Und ziemlich neu in VB... ;-)

Es soll ein Prog werden, wo man sich best. Krankheiten aus einer Liste aussuchen kann und in einer Textbox passende Medikamente und deren Menge angezeigt werden.

Also man klickt z.B. auf Button "K", und aus LstBox1 sucht man sich "Kopfweh" aus, in Listbox2 gibt es zusätzlich "Stechend" und "Bohrend" zur Auswahl. Man wählt "stechend". Dann wird in lbl1 "Aspirin" angezeigt und in lbl2 "54 Stück".
Also... nur als Beispiel... ;-)


Im folgenden poste ich einfach mal den Code, wie er bis jetzt steht.

Visual Basic:
Public Class Proj1

    Dim M01 = "Aspirin"                             'die verfügbaren Arzneistoffe
    Dim M02 = "Opium"
    Dim M03 = "Paracetamol"
    ...
    Dim M24 = "Zinksalbe"

    Dim Men5 As String = "  5 Stück"          'Mengenangaben
    Dim Men7 As String = "  7 Stück"
    ...

   'Dim ListBox1, ListBox2, lblStoffe1, lblStoffe2, lblMenge1, lblMenge2, lblHinweis, lblWarn

'**********************************************************************************   Button A
    'Füllen der Krankheitsbox "ListBox1" durch Button-Klick
    Private Sub ButtonA_Click()
        With ListBox1.Items
            .Add("A-Krankheit X")
            .Add("A-Krankheit Y")
            .Add("A-Krankheit Z")
 End With
    End Sub

'Auswahl der Listbox1 , Anzeigen der Stoffe und Mengen bzw. der ListBox2
    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Select Case ListBox1.SelectedIndex
            Case 0
                Me.lblStoffe2.Text = M01 & vbCrLf & M05  
                Me.lblMenge2.Text = Men7 & vbCrLf & Men10 
            Case 1                                                                  'Listbox2 wird aufgerufen
                Me.lblStoffe2.Text = ""
                Me.lblMenge2.Text = ""
                 With ListBox2.Items
                    .Add("bohrend")
                    .Add("stechend")
                    .Add("leicht")
                  End With
           End Select
      End Sub

'Auswahl in ListBox2 Abs (die Spezifikation eines Eintrags aus ListBox1 ("Bohrend")
    Private Sub ListBox2_SelectedIndexChanged_Abs(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Select Case ListBox2.SelectedIndex
            Case 0
                Me.lblStoffe2.Text = M08
                Me.lblMenge2.Text = Men20
            Case 1
                Me.lblStoffe2.Text = M10
                Me.lblMenge2.Text = Men20
  End Select
    End Sub

'Auswahl in ListBox2 Abs (die Spezifikation eines weiteren Eintrags aus ListBox1("stechend")
    Private Sub ListBox2_SelectedIndexChanged_Abs(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Select Case ListBox2.SelectedIndex
            Case 0
                Me.lblStoffe2.Text = M08
                Me.lblMenge2.Text = Men20
            Case 1
                Me.lblStoffe2.Text = M10
                Me.lblMenge2.Text = Men20
  End Select
    End Sub
'Ende von "ButtonA". Alle weiteren Buttons werden genauso behandelt.


@deepthroat: Sorry, ich hatte es vergessen, einzufügen. Ich hatte mittels Call bei jedem "PrivateSub ListBox" die Boxen geleert. Allerdings ging es nicht mit ListBoxX.clear, sondern nur mit ListBoX.Items.Clear.
Kann es sein, dass da was nicht stimmt?
 
@deepthroat: Sorry, ich hatte es vergessen, einzufügen. Ich hatte mittels Call bei jedem "PrivateSub ListBox" die Boxen geleert. Allerdings ging es nicht mit ListBoxX.clear, sondern nur mit ListBoX.Items.Clear.
Kann es sein, dass da was nicht stimmt?
Anscheinend verwendest du VB.NET. Das hättest du schon dazusagen müssen, da man hier im VB-Forum von VB 5/6 ausgeht.

In VB.NET mußt du tatsächlich ListBoX.Items.Clear benutzen.

Gruß
 
Zurück