创建多个表单实例

时间:2012-05-11 13:57:35

标签: c# .net winforms

我正在尝试创建多个表单实例。例如,我有一个form1和form2 并且在form1中有一个ListView。

当单击ListView中的项目时,它将创建form2的新实例。

Form2 listview1.FocusedItem.SubItems[0].Text = new Form2();
listview1.FocusedItem.SubItems[0].Text.Show();

但是C#不允许我这样做,任何想法? (是的......我有错误:D)

好的,这个想法是..假设我想拥有3个form2实例,

Form2 f21 = new Form2();

Form2 f22 = new Form2();

Form2 f23 = new Form2();

现在我将有3个form2,但是如果我不知道我可以创建多少个形式呢? (动态创建listview中项目的表单基础)

实际上这可能不是正确的方法......任何解决方案都值得赞赏。

2 个答案:

答案 0 :(得分:3)

listview1.FocusedItem.SubItems[0].Textstring属性,您无法将 System.Windows.Forms.Form分配给string

不太清楚你将在这里实现什么,但是,可能是这样的事情

new Form2().Show();

单击该项目就足够了。

如果不是您所要求的,请澄清。

修改

要管理任意数量的表单,您可以执行以下操作:

//somewhere in the code a global collection
var formsCollection = new List<Form>(); 

并点击项目:

formsCollection.Add(new Form2());
formsCollection[formsCollection.Count-1].Show();

另一件事是可能,你需要在集合中找到一些特定的表格(出于某种原因)。您可以为Form2分配一些特殊属性,一些唯一标识符,以便能够在请求后找到它。

答案 1 :(得分:3)

我认为不允许这样做意味着你会遇到某种错误。这是语法错误吗?那是我的猜测。

另外,为什么要为每次点击创建一个新表单?我建议重新使用现有对象或正确销毁旧对象。

我认为该行存在问题

Form2 listview1.FocusedItem.SubItems[0].Text = new Form2();

您不能将新表单分配给文本属性,而且,在这种语句中,您应该为变量提供名称,而不是在其他地方提供引用。 你的意思是:

Form2 f2 = new Form2(listview1.FocusedItem.SubItems[0].Text);
f2.Show();