Самый простой способ сделать это - иметь контролирующую функцию, которая открывает обе формы. Когда кнопка нажата в первой форме, закройте ее и перейдите во вторую форму.
using (var form1 = new Form1() ) {
form1.ShowDialog();
}
using (var form2 = new Form2()) {
form2.ShowDialog();
}
Код для WPF аналогичен. Самое большое отличие состоит в том, что окна WPF (и, как правило, почти все классы) не реализуют IDisposable и, следовательно, не требуют оператора using.
var win1 = new Window1();
win1.ShowDialog();
var win2 = new Window2();
win2.ShowDialog();