Show is intended to display a new, independant form, and let the existing one continue as before - which means that when it has the user focus, it can't be "behind" the second form or the user can't see what he is doing!.
If what you are trying to do is show a form that "takes control" in the same way that a MessageBox does - effectively disabling the "parent" form until the MessageBox is closed - then that's simple:
formViewData frmViewData = new formViewData(iCase, m_dt[iCase], m_dt[iCase]);
frmViewData.ShowDialog();
Processing on your main form will stop until the form is closed.
If you want to hide your main form while the other is displayed, then either:
formViewData frmViewData = new formViewData(iCase, m_dt[iCase], m_dt[iCase]);
Hide();
frmViewData.ShowDialog();
Show();
Or handle the second form FormClosed event:
formViewData frmViewData = new formViewData(iCase, m_dt[iCase], m_dt[iCase]);
frmViewData.FormClosed += frmViewData_FormClosed;
Hide();
frmViewData.Show();
Then in the handler:
void frmViewData_FormClosed(object sender, FormClosedEventArgs e)
{
Show();
}
You can do it by setting the second form to "always on top" - but that's generally more trouble than it's worth as it's system wide not application specific.