Try something like this:
var textboxes = pn1TextBoxes.Controls.OfType<TextBox>( ).OrderBy( c => c.Top );
var comments = pnComments.Controls.OfType<TextBox>( ).OrderBy( c => c.Top );
var pairs = textboxes.Zip( comments, ( t, c ) => new { t, c } );
foreach( var pair in pairs )
{
TextBox textbox = pair.t;
TextBox comment = pair.c;
// . . .
}
It assumes that the controls are arranged vertically in each panel.
You can also consider a different design. Define a User Control that includes the textbox, the comment and other controls, and add it dynamically (instead of complex manipulation of separate controls).