Visual Basic

Status
Niet open voor verdere reacties.

raoulduivestein

Gebruiker
Lid geworden
7 aug 2012
Berichten
115
Goedemiddag,

Ik vraag me af of jullie me kunnen helpen met het volgende.
In de bijlage vindt je 3 listboxen en een button. De bedoeling is dat er in box 2 wordt getoond wat er in box 1 is ingevuld en in box3 o.b.v wat er in box2 is geselecteerd.
Als er op doorgaan wordt geklikt moet je op de volgende pagina komen gebasserd op wat je bij de listboxen hebt ingevuld.

Al vast bedankt Bekijk bijlage Nieuwe map.zip
 
Laatst bewerkt:
Hoi,

Ik heb de bijlage niet geopend, volgens mij had je dit ook iets beter kunnen uitleggen met wat codes van wat je al had gedaan en precies wilde...

Maar om de geselecteerde items over te zetten kan je zoiets gebruiken:
[CPP]ListBox2.Items.Clear()

For i As Integer = 0 To ListBox1.SelectedItems.Count - 1 Step 1
ListBox2.Items.Add(ListBox1.SelectedItems(i))
Next[/CPP]

Zet dit dan in de "SelectedIndexChange" van listbox1. Dan zullen alle geselecteerde items overgezet worden. Volgens mij kan je in een listbox alleen maar 1 item selecteren, dus dan kan je beter een listview gebruiken. De code is dan ongeveer hetzelfde.

MartinJM
 
Dankjewel voor je hulp MarinJM!

Ik heb je code toegevoegd aan ListBox1, op het moment dat ik in nu in ListBox1 een waarde selecteer word deze waarde direct overgenomen in ListBox2. Mijn bedoeling is dat de waardes in ListBox2 is gebaseerd is het geen wat er in ListBox1 is geslecteerd.

Groet,

Marvin
 
Dus als er in listbox1 bijvoorbeeld "helpmij" geselecteerd is, dat er dan in listbox2 de items "forum", "chat", etc. komen te staan?

Dan kan je zoiets gebruiken:
[CPP] Private HelpmijItems() As Object = {"Forum", "Chat", "etc"}
Private GoogleItems() As Object = {"Zoeken", "Afbeeldingen", "etc"}

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
ListBox2.Items.Clear()
If ListBox1.SelectedItems(0) = "helpmij" Then
For i As Integer = 0 To HelpmijItems.Count - 1 Step 1
ListBox2.Items.Add(HelpmijItems(i))
Next
ElseIf ListBox1.SelectedItems(0) = "google" Then
For i As Integer = 0 To GoogleItems.Count - 1 Step 1
ListBox2.Items.Add(GoogleItems(i))
Next
End If
End Sub[/CPP]

MartinJM
 
Nogmaals bedankt MartinJM :)

Zie hieronder me code tot zover, nu wil ik dat als je op de button klikt op een pagina komt, gebasseerd op de 3 eerder keuzes die gemaakt zijn.
Hoe kan ik dit voor elkaar krijgen..
Groet Marvin

Code:
Public Class Form1

    Private ProuctItems() As Object = {"Kaas", "Ham", "Frikadel", "Kroket", "Mixed"}
    Private GoogleItems() As Object = {"S", "M", "L"}
    Private SausItems() As Object = {"Mayonaise", "Curry", "Ketchup"}

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        ListBox2.Items.Clear()
        If ListBox1.SelectedItems(0) = "Betalen" Then
            For i As Integer = 0 To ProuctItems.Count - 1 Step 1
                ListBox2.Items.Add(ProuctItems(i))
            Next
        ElseIf ListBox1.SelectedItems(0) = "Factuur" Then
            For i As Integer = 0 To ProuctItems.Count - 1 Step 1
                ListBox2.Items.Add(ProuctItems(i))
            Next
        ElseIf ListBox1.SelectedItems(0) = "Gebruiken" Then
            For i As Integer = 0 To ProuctItems.Count - 1 Step 1
                ListBox2.Items.Add(ProuctItems(i))

            Next
        End If
    End Sub

    Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox2.SelectedIndexChanged
        ListBox3.Items.Clear()
        If ListBox2.SelectedItems(0) = "Kaas" Then
            For i As Integer = 0 To GoogleItems.Count - 1 Step 1
                ListBox3.Items.Add(GoogleItems(i))
            Next
        ElseIf ListBox2.SelectedItems(0) = "Ham" Then
            For i As Integer = 0 To GoogleItems.Count - 1 Step 1
                ListBox3.Items.Add(GoogleItems(i))
            Next
        ElseIf ListBox2.SelectedItems(0) = "Mixed" Then
            For i As Integer = 0 To GoogleItems.Count - 1 Step 1
                ListBox3.Items.Add(GoogleItems(i))
            Next
        ElseIf ListBox2.SelectedItems(0) = "Frikadel" Then
            For i As Integer = 0 To SausItems.Count - 1 Step 1
                ListBox3.Items.Add(SausItems(i))
            Next
        ElseIf ListBox2.SelectedItems(0) = "Kroket" Then
            For i As Integer = 0 To SausItems.Count - 1 Step 1
                ListBox3.Items.Add(SausItems(i))
            Next
        End If

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    End Sub
End Class
 
Ik bedoel eigenlijk een Windows Form :)
Die wil ik voor afmaken, dus voor alle mogelijke combinaties een form.
Deze moet worden geopend in het zelfde Form als waarin de keuze gemaakt word.
 
Hoe moet het form precies veranderen? Moet de inhoud van wat controls anders zijn, gebaseerd op de selectie, of moeten de controls zelf anders zijn?

Als alleen de inhoud van de controls hoeft te veranderen, kan je 1 form maken en die dan aanpassen op basis van de selectie. Anders wordt dat ingewikkelder.

MartinJM
 
De controls moeten volledig anders zijn.
Het volgende form bestaat uit een lijst met opties, waarna je opnieuw naar een ander form geleid moet worden.
 
En hoe had jij dat in gedachten? Een lijstje met checkboxen? Of een listview waarin je de checkboxen hebt aangezet?

In het tweede geval heb je maar 1 form nodig. De inhoud van die listview kan je dan aanpassen, afhankelijk van wat er in de eerste form geselecteerd is.
 
Je moet komen op in een form met één ListBox met verschillende opties daar moet één keuze worden gemaakt.
Vervolgens moet je op doorgaan klikken.
En dan kom je in een form waar verschillende TextBoxen zijn die ook weer gevuld moeten owrden
 
Hoi,

Je kan dit in form2 zetten (en aanvullen):
[CPP] Private Class Betalen
Public Class Frikadel
Public Shared Mayonaise() As String = {"Item1 (mayo)", "Item2"}
Public Shared Curry() As String = {"Item1 (currie)", "Item2"}
End Class

Public Class Ham

End Class
End Class

Public Sub Open(ByVal Option1 As String, ByVal Option2 As String, ByVal Option3 As String)
ListBox1.Items.Clear()
If Option1 = "Betalen" Then
If Option2 = "Frikadel" Then
If Option3 = "Mayonaise" Then
For i As Integer = 0 To Betalen.Frikadel.Mayonaise.Count - 1 Step 1
ListBox1.Items.Add(Betalen.Frikadel.Mayonaise(i))
Next
ElseIf Option3 = "Curry" Then
For i As Integer = 0 To Betalen.Frikadel.Curry.Count - 1 Step 1
ListBox1.Items.Add(Betalen.Frikadel.Curry(i))
Next
End If
End If
End If

Me.ShowDialog()
End Sub[/CPP]

En dan dit in form1:
[CPP]If Not ListBox1.SelectedItems.Count = 1 Or Not ListBox2.SelectedItems.Count = 1 Or Not ListBox3.SelectedItems.Count = 1 Then
MsgBox("Je moet overal wat selecteren.")
Exit Sub
End If
Form2.Open(ListBox1.SelectedItem, ListBox2.SelectedItem, ListBox3.SelectedItem)[/CPP]

Let wel op dat dit heel erg 'hardcoded' is. Het zal op deze manier niet makkelijk zijn om nog dingen toe te voegen.

MartinJM
 
Oke, en waar plaats ik deze code dan :)

Code:
If Not ListBox1.SelectedItems.Count = 1 Or Not ListBox2.SelectedItems.Count = 1 Or Not ListBox3.SelectedItems.Count = 1 Then
            MsgBox("Je moet overal wat selecteren.")
            Exit Sub
        End If
        Form2.Open(ListBox1.SelectedItem, ListBox2.SelectedItem, ListBox3.SelectedItem)
 
Het is gelukt, maar nu opent Form2 in een nieuw venster het is de bedoeling dat form 2 opent in het zelfde venster
 
Dat is hoogstwaarschijnlijk een heleboel werk... Ik denk dat je dat het makkelijkst kan doen door verschillende panels visible/invisible te maken. Of je moet ook de layout gaan coden (veel werk).
 
[CPP]Panel1.Visible = False
Panel2.Visible = True[/CPP]

De panel control vind je in de toolbox. Zet daar de 3 listboxen in. Maak dan een 2e panel aan met daarin de controls voor nadat er op ok is gedrukt. Maak die panel invisible bij de properties (visible=false). Zet de bovenstaande code bij de button.

Wat ik nu ook bedenk: Als het stappen zijn die je moet doorlopen, kan je misschien beter een tabcontrol gebruiken. Dat is waarchijnlijk overzichtelijker om te maken.
Met de volgende code kan je dan zorgen dat ze niks kunnen veranderen in de tabs die ze al gehad hebben en dan hij doorgaat naar de volgende tab:
[CPP] TabControl1.TabPages(TabControl1.SelectedIndex).Enabled = False
TabControl1.SelectTab(TabControl1.SelectedIndex + 1)[/CPP]
 
Nice :) En hoe kan ik dan in TabPage2 zo'n listbox laten verschijnen met informatie die afhankelijk is van TabPage1
 
Op dezelfde manier als bij listbox2 en 3. Ik geloof dat je je dan niet eens zorgen hoeft te maken over in welke tab ze staan.

MartinJM
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan