Assuming your file contains 6 lines, this would be the values your mc[0]..mc[2] would hold inside your for loop:
Iteration 1 (x=0):
mc[0] = lines[0]
mc[1] = lines[1]
mc[2] = lines[2]
Iteration 2 (x=1):
mc[0] = lines[3]
mc[1] = lines[3]
mc[2] = lines[3]
Iteration 3 (x=2):
mc[0] = lines[4]
mc[1] = lines[4]
mc[2] = lines[4]
Iteration 4 (x=3):
mc[0] = lines[5]
mc[1] = lines[5]
mc[2] = lines[5]
Iteration 5 (x=4):
The exception you stated will be thrown here
mc[0] = lines[6]
mc[1] = lines[6]
mc[2] = lines[6]
Iteration 6 (x=5): Will never be reached
So instead of increasing your loop var x by 1 increase it by 3 like:
for (int x = 0; x+2 < cnt ; x+=3)
{
mc[0] = lines[x];
mc[1] = lines[x+1];
mc[2] = lines[x+2];
ListViewItem item = new ListViewItem(new[] { mc[0], mc[1], mc[2] });
listView1.Items.Add(item);
}
This approach will also consider the possibility that your file won't contain number of lines which isn't divideable by 3.