Reading from a text file into a structure and posting to list boxes
Opinion: there is no benefit to building an array like this. I agree it is a clunky use of arrays which I think is unnecessary (and old-school). For instance you don't even need to know in advance how many records, nor do you need to dimension the array to a predetermined size. There are more flexible data types available than arrays for the job.
When adding items to controls like a ListView or ListBox using .Items.Add you can use BeginUpdate at the beginning of your loop and EndUpdate at the end as you are populating the items from a loop.
The aim is to make the UI more responsive - if you have a large file and you're adding lots of items, the interface may freeze while the loop is running.
Although I would probably bind the list to a datatable instead, or another structure. Just append items to the datatable and let the control update itself.
So here is a refactored example: I have converted your structure to a class and I use List Of instead of an array (note the addition of a binding source). For this to work I need to use properties to expose class members (so I think), which is why I am using a class instead of a structure, but there should be a way to retain a structure if you wish.
There are several ways of reading a file, in this example I am using StreamReader. Note the use of a context manager (the Using block), which means I don't have to worry about closing the file, including in case of an exception. This happens automatically past the End Using statement.
In your code PetFile.Close() will not be executed if an exception occurs. Your procedure will exit after MsgBox. But what you can do is move PetFile.Close() to a Finally section within your Try-Catch block. But if you're attempting to close a file that isn't even open, this will raise an exception within the exception. The best solution is not to bother with it and use the context manager.
Note that each line in the file has to contain at least 4 comma-separated fields or the code will crash. So it is advisable to verify for each line that fields.Count = 4 and skip lines that don't match this criterion.
Here I am populating only one listbox, you can figure out the rest easily hopefully.
Imports System.IO

Public Class Form1

    Public Class PetsRecord
        Private m_CustomerName As String
        Private m_CustomerAddress As String
        Private m_PetType As String
        Private m_Vaccinated As String

        Public Property CustomerName() As String
            Get
                Return Me.m_CustomerName
            End Get
            Set(ByVal value As String)
                Me.m_CustomerName = value
            End Set
        End Property

        Public Property CustomerAddress() As String
            Get
                Return Me.m_CustomerAddress
            End Get
            Set(ByVal value As String)
                Me.m_CustomerAddress = value
            End Set
        End Property

        Public Property PetType() As String
            Get
                Return Me.m_PetType
            End Get
            Set(ByVal value As String)
                Me.m_PetType = value
            End Set
        End Property

        Public Property Vaccinated() As String
            Get
                Return Me.m_Vaccinated
            End Get
            Set(ByVal value As String)
                Me.m_Vaccinated = value
            End Set
        End Property
    End Class 'Structure

    Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click
        Dim PetArray As New List(Of PetsRecord)
        Dim bs As New BindingSource()
        Dim PetFile As String = &quot;C:\Users\test\Documents\pets.txt&quot;

        Using r As StreamReader = New StreamReader(PetFile)
            Dim line As String
            line = r.ReadLine
            Do While (Not line Is Nothing)

                ' split the line into fields
                Dim fields As New List(Of String)(line.Split(&quot;,&quot;c))
                If fields.Count &lt; 4 Then
                    Console.WriteLine(&quot;Skipping line (contains less than 4 fields): &quot; &amp; line)
                Else
                    ' flag this line
                    If fields(3) = &quot;No&quot; Then
                        Dim pet As New PetsRecord
                        pet.CustomerName = fields(0)
                        pet.CustomerAddress = fields(1)
                        pet.PetType = fields(2)
                        pet.Vaccinated = fields(3)
                        PetArray.Add(pet)
                    End If
                End If

                line = r.ReadLine
            Loop
        End Using

        ' bind the listbox to PetArray
        bs.DataSource = PetArray
        Me.lstCustomer.DisplayMember = &quot;CustomerName&quot;
        Me.lstCustomer.DataSource = bs

    End Sub
End Class