با سلام دوست عزیز نیازی به این (به قول شما) دردسرا نیست کافیه توی ایونت کلیک دکمه موردنظرتون توی فرم 1 همچین کدی بنویسین:

if (Application.OpenForms["Form2"] == null)
{
Form2 frm2 = new Form2();
//frm2.Name = "SomeNameForThisObject";
frm2.Show();
}
else
{
Application.OpenForms["Form2"].Activate();
}


اون خطی که کامنت کردم رو میتونی از حالت کامنت دربیاری و به فرمت یه اسم دلخواه بدی و توی کالکشن OpenForms اون اسم رو جایگزین کنی، اگرم نه که میتونی از همون اسم کلاس استفاده کنی