【问题标题】:Create multiple form instances创建多个表单实例
【发布时间】:2012-05-11 13:57:35
【问题描述】:

我正在尝试创建多个表单实例。例如,我有一个 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] 怎么办? (动态创建列表视图中项目的表单库)

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

【问题讨论】:

  • 我什至不知道从哪里开始这个......你想做什么?
  • .Text 不是表单,而是字符串。
  • 我认为你的问题比你的代码行更深,这是你对 OO、属性类型和实例的理解。你可以复制下面的人的粘贴建议,但如果你不理解它是没有用的。您可能想先运行一些教程。

标签: c# .net winforms


【解决方案1】:

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

【讨论】:

  • 我编辑了我的问题。 :D ,我知道我们不能将 System.Windows.Forms.Form 分配给字符串,但是如果我希望表单是动态的呢?
  • 嗨,这应该是我要找的。也许我用错误的“关键词”谷歌搜索:D 无论如何,感谢并感谢您的帮助。祝你有美好的一天。
【解决方案2】:

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

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

我认为线路有问题

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

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

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

【讨论】:

  • 感谢您的回答,我确实用谷歌搜索并找到了一些与您类似的答案。但我需要将不同的数据发布到每个表单以进行监控。
猜你喜欢
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 2017-03-30
相关资源
最近更新 更多