Если вы хотите список открытых форм, то есть Application.OpenForms
. Вы можете повторить это, используя GetType () и проверив .Assembly
, чтобы найти их из другой сборки. Кроме того, я не совсем ясно по этому вопросу ...
Assembly currentAssembly = Assembly.GetExecutingAssembly();
List<Form> formsFromOtherAssemblies = new List<Form>();
foreach (Form form in Application.OpenForms) {
if (form.GetType().Assembly != currentAssembly) {
formsFromOtherAssemblies.Add(form);
}
}
Если вы просто хотите отслеживать формы, которые вы открыли сами, кешируйте этот экземпляр. Или, если вы используете «собственные формы», вы можете просто проверить по имени:
private void button1_Click(object sender, EventArgs e) {
foreach (Form form in OwnedForms) {
if (form.Name == "Whatever") {
form.Activate();
return;
}
}
Form child = new Form();
child.Name = "Whatever";
child.Owner = this;
child.Show(this);
}