The solution is to have single form with tabs, wizard (google .net wizard control) or progressing panels in which you lead the user from step to step without opening/closing new forms.
If you're opening dialog forms, this is the way you pass the data.
Public Class MyDialog {
public property DataRowView DoctorToReturn {get;set;}
protected void btnOK_Click(object sender, EventArgs e) {
DoctorToReturn = dgvYourGrid.SelectedRow.DataBoundItem
}
}
public class myForm
void openDialog () {
using (dlg = new myDialog()) {
if (dlg.ShowDialog() == DialogResult.OK) {
doctorObject.Name = dlg.DoctorToReturn["name"];
doctorObject.Office = dlg.DoctorToReturn["office"];
}
}
}