传递信息的正确方法

时间:2016-11-21 22:38:18

标签: c# asp.net winforms

所以我一直在想。

创建表单并使用applicaton.run(form1)时。在那个form1中你打开另一个form2并隐藏form1。在form2中你打开另一个form3并隐藏表单2.但是在form3中你想要使用form1中提供的信息(变量)吗?如果我错了,请纠正我。

我已经想过几种方法,但我不认为它们是正确的方法。

  1. 将form1中的信息保存在静态类中。

  2. 在主类中创建所有表单对象,然后逐个关闭/运行它们。

  3. 将信息(变量)从form1传递到form2到form3。

  4. 这样做的正确方法是什么?

    如果难以理解,我很抱歉。

2 个答案:

答案 0 :(得分:0)

真的没有&#34;正确&#34;这样做的方式。你提到的所有方式都可行。另一种方法是维护所有表单的一个静态列表。这样,任何表单都可以通过搜索列表来找到任何其他表单。更具体地说,Dictionary<string,Form>其中字符串是表单的唯一标识符,可能证明是有用的。

那就是说,这一切都取决于你的设计目标。通常情况下,最好采用最简单的解决方案来实现您的设计目标。

答案 1 :(得分:0)

这取决于。如果这些是以模态显示的对话框形式,并且只有一个或两个变量,则通常可以将值作为属性存储在该表单的类中,并且只需在标准MessageBox表单上使用与DialogResult相同的方式进行检查。 / p>

如果它更复杂或表单保持打开状态,那么您需要创建一个对象并将其传递给表单。记住对象是通过引用传递的,所以如果你创建一个名为MyDataContainer的类,然后在主窗体中创建一个实例,然后将该实例传递给其他窗体,那么它们就是每个窗体中的相同实例。因此,如果form3更新该实例,其他表单也将能够看到这些更改。

Ps:避免静态路由,很少有一个有效的用例。