Does this file change during your processing? If not you could use ReadLine to place each one in a string array then you could easily go through the array by index position.
List<string> lines = new List<string>();
while(string line = reader.ReadLine() != null)
{
lines.Add(line);
}
for(int x = 0; x < lines.Count; x++)
{
if(lines[x].Contains(...))
{
if(!CheckLine(lines[x+2]) )
{
X+=2;
}
}
}
(Didn't run this through the compile but you get the idea)