创建一个表单的多个实例?

时间:2015-12-07 11:00:41

标签: c# winforms


请考虑以下代码:

    for (int i = 0; i < 10; i++)
    {
        Form1 frm = new Form1;
        frm.Show();
    }

问题是如何管理已创建的这些实例?
示例:创建这些实例后,我想获取每个实例的ID,然后用户将选择要显示的实例! 提前谢谢!

2 个答案:

答案 0 :(得分:2)

只需将这些实例保存到某个集合中,然后您就可以联系到它们。

类似的东西:

var forms = new List<Form1>();
for (int i = 0; i < 10; i++)
{
    var frm = new Form1();
    forms.Add(frm);
    frm.Show();
}

所以稍后您可以将所需的第i个表单设为forms[i]

但是请注意 - 当不再需要时,您将不得不关心从此集合中删除表单,否则会阻止垃圾收集器收集它。

答案 1 :(得分:0)

您说要在用户选择if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { return resources.getDrawable(id, context.getTheme()); } else { return resources.getDrawable(id); } 之后显示其中一个表单,但是在循环中为所有表单调用"ID"。所以你们所有人都不仅仅选择了一个。我想你应该删除对Show的调用。
但在这种情况下,自动维护的Show集合为空(或者至少不包含在循环中创建的表单),因此您需要这些表单的自定义集合。

最后,您需要设置一些作为动态创建表单的ID的内容,否则您无法从用户输入中检索它。

OpenForms