Avatar billede websam Nybegynder
16. september 2005 - 14:14 Der er 13 kommentarer og
1 løsning

ListBox med op og ned function ?

Hejsa,

Jeg er ved at lave en op/ned function på en listbox, men kan ikke helt få det til at spille. Det jeg vil er at liste en række ord i en listbox hvor så en bruger kan rykke et ord op el. ned ved hjælp af nogle knapper. Jeg har lavet følgende som ikke helt virker :

Mine sub's til håndtering af op og ned rykning :

    Private Sub btn_MoveUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_MoveUp.Click
        '--- Flytter op
        MoveUp(ListBox1)
    End Sub

    Private Sub btn_MoveDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_MoveDown.Click
        '--- Flytter ned
        MoveDown(ListBox1)
    End Sub

Mine sub's der så skulle flytte enten op eller ned :

    Private Sub MoveDown(ByVal listBox As ListBox)
        If listBox Is Nothing Then
            Throw New ArgumentNullException("listBox")
        End If
        Dim item As ListItem = listBox.SelectedItem
        If Not (item Is Nothing) Then
            Dim idx As Integer = listBox.SelectedIndex
            If idx < listBox.Items.Count - 1 Then
                listBox.Items.RemoveAt(idx)
                listBox.Items.Insert(idx, item)
            End If
        End If
    End Sub

    Private Sub MoveUp(ByVal listBox As ListBox)
        If listBox Is Nothing Then
            Throw New ArgumentNullException("listBox")
        End If
        Dim item As ListItem = listBox.SelectedItem
        If Not (item Is Nothing) Then
            Dim idx As Integer = listBox.SelectedIndex
            If idx > 0 Then
                listBox.Items.RemoveAt(idx)
                listBox.Items.Insert(idx, item)
            End If
        End If
    End Sub

Jeg ved ikke helt hvad jeg mangler for at det virker, men måske en kan hjælpe mig med det ?

/Websam
Avatar billede thanse21 Nybegynder
16. september 2005 - 15:35 #1
prøv at tælle din idx variabel op eller ned alt efter hvilken knap der bliver trykket på.

Som det ser ud nu tager du den bare ud og sætter den ind igen
Avatar billede websam Nybegynder
16. september 2005 - 15:41 #2
og hvor skal jeg lige gøre det henne ? Jeg har rodet med det hele dagen nu og kan ikke få det sidste med ?

/Websam
Avatar billede thanse21 Nybegynder
16. september 2005 - 15:50 #3
det skal du gøre i dine subs. (Jeg er C#-bruger så kig lige syntaxen igennem inden du copy-paster :))
MoveDown-metoden:
If listbox.SelectedIndex != listbox.Items.Count Then
  Dim index AS Integer = listbox.SelectedIndex;
  Dim texttemp AS String = listbox.Items[index+1].Text;
  Dim valuetemp AS String = listbox.Items[index+1].Value;
  listbox.Items[index+1].Text = listbox.Items[index].Text;
  listbox.Items[index+1].Value = listbox.Items[index].Value;
  listbox.Items[index].Text = texttemp;
  listbox.Items[index].Value = valuetemp;
  lstUndergrupper.SelectedIndex = index+1;
End If

Det der sker er at det item der er selected får skiftet sin værdi og text om med den der ligger nedenunder i listen. De bytter plads og det ser ud som om man flytter den et skridt ned i listen.

Det er samme princip for MoveUp, bare index-1 i stedet for +1.

Giver det mening?
Avatar billede websam Nybegynder
16. september 2005 - 15:54 #4
Så hellere skrive det i C# så har jeg en converter der kan klare det :o)
Avatar billede thanse21 Nybegynder
16. september 2005 - 15:55 #5
Men kan du ikke se princippet i det?
Avatar billede websam Nybegynder
16. september 2005 - 15:57 #6
jo jo at der sættes +/- afhænigt af om den skal op og ned.

Jeg er lige ved at prøve om jeg kan få det stykket sammen.

/Websam
Avatar billede websam Nybegynder
16. september 2005 - 16:06 #7
I din stump kode har du denne linie :

lstUndergrupper.SelectedIndex = index+1;

Jeg har prøvet at skifte det ud med listbox og der sker stadig ingenting når jeg køre koden.

Hvad reprecentere din lstUndergrupper ?

/Websam
Avatar billede websam Nybegynder
16. september 2005 - 17:23 #8
Gav du op ?
Avatar billede websam Nybegynder
16. september 2005 - 17:28 #9
Fandt ud af det med et eksempel fra en anden side, smid et svar
Avatar billede snepnet Nybegynder
16. september 2005 - 19:30 #10
der ligger sådan nogle kontroller færdige rundt omkring - f.eks. her:
http://www.eworldui.net/
mvh
Avatar billede snepnet Nybegynder
16. september 2005 - 19:31 #11
ej for hulen - det lader til at han er startet hos ms, og ikke har fået godkendelse til at have den slags online :o( (måska kan du finde dem et andet sted).
mvh
Avatar billede websam Nybegynder
16. september 2005 - 19:35 #12
Jeg har i mellemtiden fået det til at virke både op og ned og fra en listbox til en anden så jeg håber jeg klare mig for denne gang, men ellers tak for info ;o)
Avatar billede thanse21 Nybegynder
19. september 2005 - 13:37 #13
ok...godt du fik det til at virke, jeg fik lige pludselig meget travlt der i fredags. lstUndergrupper er ikke noget du skal bruge, det er fordi jegh ar copy-pastet fra noget af min egen kode.
Avatar billede websam Nybegynder
25. september 2005 - 18:15 #14
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester