代码之家  ›  专栏  ›  技术社区  ›  Aaron M

如何将变量从一个窗体传递到另一个窗体?

  •  3
  • Aaron M  · 技术社区  · 17 年前

    当处理用户必须单步执行的表单集合时,在创建该表单的新实例时,是更好地传递数据,还是更好地从以前的表单调用函数?我写了一些调用前一个例程的代码,它看起来很难看,我想不出为什么要这样做。我能想到的唯一原因是如果数据很大,而且很有可能用户不会使用数据,除非在特殊情况下。

    7 回复  |  直到 17 年前
        1
  •  5
  •   Patrick McDonald    17 年前

    如果将所有共享数据放在一个类中,然后将对该类实例的引用传递给每个表单上的构造函数,那么数据有多大并不重要,因为每次只传递一个引用。

    这样做的好处是你的表格没有相互联系。

        2
  •  0
  •   David    17 年前

    这在很大程度上是一个主观问题。我个人选择了一种更容易维护的方式,以便以后需要处理我的代码的人使用。我将实例化表单,用我试图传递的内容加载公共属性,然后使表单可见。这样,任何编辑“新”表单的人都知道所有数据都是预加载的。任何编辑“旧”窗体的人都知道在哪里加载任何新属性。

        3
  •  0
  •   Darin Dimitrov    17 年前

    如果新表单将立即需要数据,那么最好将其传递到此表单的构造函数中。

        4
  •  0
  •   Samiksha    17 年前

    使用新表单,您可以使用server.transfer从其他表单传递值。 您可以阅读有关服务器的信息。请在此处传输: http://www.dotnet-guide.com/servertransfer.html

        5
  •  0
  •   Kieveli    17 年前

    您可以有一个存储所有数据的全局数据变量。每个表单都可以独立访问它。如果您有一个多线程的实现,您可以简单地在全局数据变量的访问器上添加线程安全性。

        6
  •  0
  •   Bryan    17 年前

    我通常使用的两个主要选项是将信息存储在数据库中,如sqlserver或ms access(如果有许多表单将使用大量信息),或者如果信息只用于下一个表单,我将把信息传递给该表单,然后根据需要存储它。也就是说,如果它创建一个数据表以用作源,则将信息存储在hiddenfield中,甚至将信息放入加载时需要进入的文本框、标签、组合框等中。

        7
  •  0
  •   Darwyn    17 年前

    如果您谈论的是WinForms(而不是WebForms),那么您可能应该使用 static class . 使用静态成员保留上下文对象的引用(或您计划与其他表单共享的任何内容)。保证所有静态成员在首次使用前都已初始化。

    类似的选择是使用单例设计模式创建 singleton class .

    实际上,这两个解决方案只是使全球访问单个引用成为可能,这是一种有时可以过度使用的能力,因此…小心。