2016-11-21 56 views
0

所以我一直在想。正确的方式来传递信息

当您创建一个窗体并使用applicaton.run(form1)。然后在form1中打开另一个form2并隐藏form1。在form2中,您打开另一个form3并隐藏表单2.但是,在form3中,您想使用form1中提供的信息(变量),该信息不可访问?如我错了请纠正我。

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

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

  2. 创建各种形式的对象主类和1

  3. 关闭/运行它们传递1从Form1信息(变量)窗口2到form3。

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

对不起,如果它很难遵循。

回答

0

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

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

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

+0

是的,理解。我总是犹豫,我应该选择哪种方式。这使事情变得更容易一些。 –

0

确实没有“正确”的方法来做到这一点。你提到的所有方法都可以工作。另外一种方法是维护一张所有表格的静态列表。这样,任何表单都可以通过搜索列表来找到任何其他表单。更具体地说,Dictionary<string,Form>其中string是表单的唯一标识符,可能会证明是有用的。

这就是说,这一切都归结于您的设计目标。通常情况下,最好使用最简单的解决方案来完成您的设计目标。

+0

谢谢你,我的脑海里变得很轻松!我将使用完成我的设计目标的最简单的解决方案。 –

+0

@tuyen。很高兴有帮助。一个upvote将不胜感激。 –

+0

很想去,但我没有足够的代表公开展示。它确实记录了它的记录。 –

相关问题