0

我正在尝试创建多个表单实例。例如,我有一个 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,但是如果我不知道我可以创建多少个 form[s] 怎么办?(动态创建列表视图中项目的表单库)

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

4

2 回答 2

3

listview1.FocusedItem.SubItems[0].Text是一个string属性,你不能分配 System.Windows.Forms.Formstring.

不是很清楚你要在这里实现什么,但是,可能是这样的

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 分配一些特殊属性,即一些唯一标识符,以便之后能够根据要求找到它。

于 2012-05-11T14:00:52.877 回答
3

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

另外,您为什么要为每次新​​点击创建一个新表单?我建议重新使用现有对象或适当销毁/取消引用旧对象。

我认为线路有问题

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

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

Form2 f2 = new Form2(listview1.FocusedItem.SubItems[0].Text);
f2.Show();
于 2012-05-11T14:01:18.227 回答