Abra um formulário se não houver outra instância dele. Open - Pass Type to a Method

Quero simplificar parte do meu código. Portanto, eu quero fazer uma função que verifica, se um determinado formulário já está aberto. No momento, tenho o código abaixo de cada botão no meu formulário de início.

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();
}

Agora eu gostaria de ter 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();
}

Mas não posso passar um tipo para uma função EDIT: Você certamente pode, mas eu não sabia como e por onde começar.

Existe uma maneira (nother) de conseguir o que eu preciso?

questionAnswers(2)

yourAnswerToTheQuestion