Argument Out of range Except Error

I get this argument out of range error whenever I click on the check box on my listview. If I click the listview link (in my case its a part file path and name) I do not get this error.
VB-Error.png
cmdolcetAsked:
Who is Participating?
 
CodeCruiserConnect With a Mentor Commented:
>OK when I run the loop I will still get an error.
You wont. You would only get errors if you try to access a selected item using a checked item index. Dont mix them and you should be fine.
0
 
Neil RussellTechnical Development LeadCommented:
You need to surround all that with

If lvPartFiles.CheckedItems.Count <> 0 Then


End if
0
 
cmdolcetAuthor Commented:
I did what you suggested and I still get an error. Te confusing part is that this happens only when I check the checkbox. When I double click on the part file path and name link it will place a check mark in the checkbox and the error doesn;t happen. Why the difference?
For cnt = 0 To lvPartfiles.CheckedItems.Count - 1 ' lvPartfiles.SelectedItems.Count - 1 
                If lvPartfiles.CheckedItems.Count <> 0 Then
                    _File_Selected = lvPartfiles.SelectedItems(cnt).Text
                    If lvPartfiles.SelectedItems.Item(cnt).ForeColor = Color.Red Then
                        MessageBox.Show("File has no XYZ Definitions associated with it. User must Edit and Upload the XYZ Definitions.", "XYZ Definition Warning Message", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                    Else
                        For Each file As String In System.IO.Directory.GetFiles(_dir_name_XML_Files, "*.xml")
                            XML_File_Name_Only = file
                            xmlFile = file
                            slashPosition = file.LastIndexOf("\")
                            XML_File_Name_Only = xmlFile.Substring(slashPosition + 1)
                            XML_File_Name_Only = System.IO.Path.GetFileNameWithoutExtension(XML_File_Name_Only)

                            'Compares the two files
                            If LMI_File Like "*########" Then
                                LMI_File = LMI_File.Remove(LMI_File.Length - 12)
                            End If
                            If LMI_File = XML_File_Name_Only Then
                                'Opens the selected XML File that matches the .LMI File selected in the List.
                                Select_XMLFile()
                                Create_Trasfer_File()

                            End If

                        Next
                    End If
                End If
                    Exit Sub
            Next

Open in new window

0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
Neil RussellTechnical Development LeadCommented:
Ah listview.selecteditems index is based 1 not 0!

lvpartfiles.selecteditems.item(cnt+1)

or for cnt = 1 to .......
0
 
Neil RussellTechnical Development LeadCommented:
If lvPartfiles.CheckedItems.Count <> 0 Then  
    For cnt = 1 To lvPartfiles.CheckedItems.Count

0
 
cmdolcetAuthor Commented:
I get the same Argument out of range, just the index now has changed to 1.
VB-Error.png
0
 
AmbusyCommented:
The error lies in the fact that you can SELECT items in a list view (click on a text, Shift or Ctrl-click for multiple selects)
And you can CHECK items (a V in the box)
The 2 collections CheckedItems and SelectedItems are not the same and refer to 2 completely different things.

Try: Click a text, Ctrl-click another. Then CHECK both lines. Your program will work!
0
 
AmbusyCommented:
a bit of code to help you ahead:
       For cnt As Integer = 0 To ListView1.CheckedItems.Count() - 1
            Dim i As Integer = ListView1.CheckedIndices(cnt)
            Dim myText As String = ListView1.Items(i).Text ' text from checked line
        Next

Open in new window

0
 
cmdolcetAuthor Commented:
Ambusy, I see your point. However the program must work with users clicking in the checkbox or clicking the link.
0
 
CodeCruiserCommented:
>However the program must work with users clicking in the checkbox or clicking the link.
In that case, I would deal with the CheckedItems and SelectedItems separately. So loop through checkeditems and also loop through selecteditems.
0
 
cmdolcetAuthor Commented:
CodeCruiser: How can I tell if someone has done the checkitem or selecteditem? I understand your logic of seperation the two but I would need some CAse Statement of known selection.

Thanks.
0
 
CodeCruiserCommented:
When you run the loop

i = 0 to selecteditems.count - 1

if there is no selected item, the loop will not run.
0
 
cmdolcetAuthor Commented:
OK when I run the loop I will still get an error. How can I capture this and make it go to another loop.

Try Catch?
0
 
cmdolcetAuthor Commented:
I guess I need to know how to look for the difference between a CheckedItem and Selected Item
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.