我正在尝试创建多个表单实例。例如,我有一个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中项目的表单基础)
实际上这可能不是正确的方法......任何解决方案都值得赞赏。
答案 0 :(得分:3)
listview1.FocusedItem.SubItems[0].Text
是string
属性,您无法将 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();