First off...anything to do with scrolling on WinForms is flakey.
For simplicity sake (and so I don't have to write something to manage windows) move the declaration of frm_child to the class level.
public partial class Form1 : Form
{
Form frm_child = new Form();
...
Add this (when you create the form):
frm_child.Enter += new EventHandler(frm_child_Enter);
...and in the event handler:
void frm_child_Enter(object sender, EventArgs e)
{
this.ScrollControlIntoView(frm_child);
}
Basically, if any control is activated in the form, enter will fire and then you are telling the 'parent' form to scroll the other one into view.
It's even worse if you try to use MDI...
Cheers,
-jc