Abra un formulario si no hay otra instancia de él. Abrir - Pase el tipo a un método

Quiero simplificar parte de mi código. Por lo tanto, quiero hacer una función que compruebe, si un cierto formulario ya está abierto. En este momento tengo el siguiente código detrás de cada botón en mi formulario de inicio.

private void button_parts_Click(object sender, EventArgs e)
{
    FormCollection fc = Application.OpenForms;
    foreach (Form frm in fc)
    {
        if (frm is frm_parts) { return; }
    }
    frm_Teile newForm = new frm_parts();
    newForm.Show();
}

Ahora me gustaría tener algo como:

private void button_parts_Click(object sender, EventArgs e)
{
    StartNewForm(frm_parts);
}

private void StartNewForm(Type myForm)
{
    FormCollection fc = Application.OpenForms;
    foreach (Form frm in fc)
    {
        if (frm is myForm) { return; }
    }
    myForm newForm = new myForm();
    newForm.Show();
}

Pero no puedo pasar un tipo a una función EDITAR: Ciertamente puedes, pero no sabía cómo y dónde comenzar.

¿Hay alguna otra forma de lograr lo que necesito?

Respuestas a la pregunta(2)

Su respuesta a la pregunta