Ok, one thing that does puzzle me is
private void ShowSld(int sldCnt)
{
int xPos = 10;// 140;
int yPos = 23;// 140;
this.groupBox2.Controls.Clear();
while (n < sldCnt)
{
sldArray[n].Tag = n;
sldArray[n].Width = 125;
sldArray[n].Height = 115;
if (xPos > 570)
{
xPos = 10;
yPos = yPos + sldArray[n].Height + 35;
}
sldArray[n].Left = xPos;
sldArray[n].Top = yPos;
xPos = xPos + sldArray[n].Width + 15;
groupBox2.Controls.Add(sldArray[n]);
sldArray[n].FileName = filCol[n].FullName;
n++;
}
}
At face value, it would seem the start variable should work out but then you dont seem to use it in your actual display.. and you rely on "n" which could get changed in a number of places, but, the while loop would at least end at the right end..
You might want to tweak that so it maybe has a more reliable output - as for example, if you displayed page 3, and selected a slide, n goes back to 0.
use of local variables would overcome the concerns about last state, but it would be easier to pass a start+end variable pair to your function as a result.