Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 379
  • Last Modified:

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
0
cmdolcet
Asked:
cmdolcet
  • 6
  • 3
  • 3
  • +1
1 Solution
 
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
 
Neil RussellTechnical Development LeadCommented:
Ah listview.selecteditems index is based 1 not 0!

lvpartfiles.selecteditems.item(cnt+1)

or for cnt = 1 to .......
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
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
 
CodeCruiserCommented:
>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

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 6
  • 3
  • 3
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now