Solved

Moving Listbox Items up and down the list.

Posted on 2008-09-29
5
907 Views
Last Modified: 2012-05-05
Hi all.

I am working on two buttons(up/down) that moves the selected.items to a new index(item to the new position in the list) - with the following code it works right up until the value is -1 or greater than number of indexes in the list - obviously, so how do set parameters so it can't go lower than 0 and greater than the number of indexes in the list? So I am trying the IF statement which helps, but it does not stop the movement beyond the limits - which throws error of course. Thanks for any help.
Dim int As Integer = lsbTasks.SelectedIndex

        If int = lsbTasks.Items.Count Then

            btnSTDown.Enabled = False

        ElseIf int <> lsbTasks.Items.Count Then

            btnSTDown.Enabled = True

            Try

                int = lsbTasks.SelectedIndex + 1

                Dim item As String = lsbTasks.SelectedItem

                lsbTasks.Items.Remove(item)

                lsbTasks.Items.Insert(int, item)

                lsbTasks.SetSelected(int, True)

            Catch

            End Try

        End If

Open in new window

0
Comment
Question by:Hawkvalley1
  • 2
  • 2
5 Comments
 
LVL 23

Expert Comment

by:Christopher Kile
ID: 22601099
When lsbTasks.SelectedIndex < lsbTasks.Items.Count - 1, btnSTDown should be enabled.
When lsbTasks.SelectedIndex > 0, btnSTUp should be enabled.
Correct your code to do this.
0
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 250 total points
ID: 22601530
Right...I think these three routines should cover you nicely:
    Private Sub lsbTasks_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lsbTasks.SelectedIndexChanged

        Dim index As Integer = lsbTasks.SelectedIndex

        If index <> -1 Then

            btnSTUp.Enabled = (index > 0)

            btnSTDown.Enabled = (index < lsbTasks.Items.Count - 1)

        End If

    End Sub
 

    Private Sub btnSTUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSTUp.Click

        Dim index As Integer = lsbTasks.SelectedIndex

        If index > 0 Then

            Dim temp As String = lsbTasks.SelectedItem

            lsbTasks.Items.RemoveAt(index)

            lsbTasks.Items.Insert(index - 1, temp)

            lsbTasks.SelectedIndex = index - 1

        End If

    End Sub
 

    Private Sub btnSTDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSTDown.Click

        Dim index As Integer = lsbTasks.SelectedIndex

        If index <> -1 AndAlso index < lsbTasks.Items.Count - 1 Then

            Dim temp As String = lsbTasks.SelectedItem

            lsbTasks.Items.RemoveAt(index)

            lsbTasks.Items.Insert(index + 1, temp)

            lsbTasks.SelectedIndex = index + 1

        End If

    End Sub

Open in new window

0
 
LVL 9

Author Comment

by:Hawkvalley1
ID: 22601599
ok, this is what I have in the SelectedIndex_Changed event(1st part):
in the Button_Click event(2nd part):

It is working perfectly, thanks
'1st part

If lsbTasks.SelectedIndex < lsbTasks.Items.Count - 1 Then

            btnSTDown.Enabled = True

        Else

            btnSTDown.Enabled = False

        End If

        If lsbTasks.SelectedIndex > 0 Then

            btnSTUP.Enabled = True

        Else

            btnSTUP.Enabled = False

        End If

'2nd part

Dim int As Integer = lsbTasks.SelectedIndex + 1

        Dim item As String = lsbTasks.SelectedItem

        lsbTasks.Items.Remove(item)

        lsbTasks.Items.Insert(int, item)

        lsbTasks.SetSelected(int, True)

Open in new window

0
 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 22601650
Did you even look at my code?...   =)
0
 
LVL 9

Author Comment

by:Hawkvalley1
ID: 22601758
not til after I had already posted...

It is very well written, thanks...
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

If you're writing a .NET application to connect to an Access .mdb database and use pre-existing queries that require parameters, you've come to the right place! Let's say the pre-existing query(qryCust) in Access takes a Date as a parameter and l…
Introduction When many people think of the WebBrowser (http://msdn.microsoft.com/en-us/library/2te2y1x6%28v=VS.85%29.aspx) control, they immediately think of a control which allows the viewing and navigation of web pages. While this is true, it's a…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

919 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now