Well, Joe, I'm new to C#, and I think it's kinda troubling that no one's responded yet to your query.
Basically, the process you seem to be describing can be implemented by setting the "IsMdiContainer" property of what will be your parent window to TRUE.
Then, you create your child objects normally, and whatever control (button or menu) you use to open an instance of a child object, it should have code similar to the following:
protected void MDIChildNew_Click(object sender, System.EventArgs e){
Form2 newMDIChild = new Form2();
// Set the Parent Form of the Child window.
newMDIChild.MdiParent = this;
// Display the new form.
newMDIChild.Show();
}
"Form2" is the name of the child object. This should cause the child object to exist within the confines of the parent window. My only problem with this concept is the lack of control (as far as I know) over the position of the child objects; they cascade by default, which I would rather they didn't do.
There might be easier ways, but this process has worked for me. Hope this helps!