Instead of showing next dialog from the previous one, a much better alternative would be to close the dialog first and then show next dialog. Something like :
var result = dialog1.ShowDialog();
if (some_conditions)
{
var result2 = dialog2.ShowDialog();
}
if (some_other_conditions)
{
var result3 = dialog3.ShowDialog();
}
if (some_final_conditions)
{
var result4 = dialog4.ShowDialog();
}
I would say that each dialog would use the main window as their owner. Thus doing it that way, it might be possible to first close the old dialog and show the new one from the same event handler.
I can say that modal dialog are not designed to be hidden. This scenario is af far as I understand not supported and thus will not behave well. A modal dialog is designed to be shown until its end and after that the code continue at the caller location just after the call of ShowDialog.
Many things ca goes wrong if you try to make a workaround. In particular, enabling, flickering, taskbar buttons, focus might not bahave correctly and thus the application won't work well with the system.
Avoid hiding modal Windows.
Alternatively, if it is a wizard, then you should simply show a user control for each page Inside the same dialog.