当处理用户必须单步执行的表单集合时,最好在创建该表单的新实例时传递数据,还是从上一个表单调用函数更好?我编写了一些调用上一个例程的代码,它看起来很难看,而且我无法想到为什么这样做的原因。我能想到的唯一原因是数据是否很大,并且除了特殊情况外,用户很可能不会使用数据。
答案 0 :(得分:5)
如果将所有共享数据放在一个类中,然后将对该类实例的引用传递给每个表单上的构造函数,那么数据的大小并不重要,因为它只是一个引用每次都过去了。
这样做的好处是您的表单不会彼此联系在一起。
答案 1 :(得分:0)
这在很大程度上是一个主观问题。我个人采取了一条似乎更容易维护的路线,以便以后必须处理我的代码的人。我将实例化表单,使用我试图传递的任何内容加载公共属性,然后使表单可见。这样,编辑“新”表单的任何人都知道所有数据都已预先加载。编辑“旧”表单的任何人都知道在哪里加载任何新属性。
答案 2 :(得分:0)
如果新表单需要立即获取数据,那么最好在此表单的构造函数中传递它。
答案 3 :(得分:0)
使用新表单,您可以使用server.transfer从其他表单传递值 您可以在此处阅读有关Server.Transfer的信息:http://www.dotnet-guide.com/servertransfer.html
答案 4 :(得分:0)
您可以拥有一个存储所有数据的全局数据变量。每个表单都可以独立访问它。如果你有一个多线程实现,你可以简单地在全局数据变量的访问器上添加线程安全性。
答案 5 :(得分:0)
我通常使用的两个主要选项是将信息存储在数据库(如SQLServer或MS-Access)中,如果有很多表单将使用的信息,或者信息仅用于下一个表单我会将信息传递给该表单,然后根据需要存储它。即如果它创建一个数据表供它用作源,将信息存储在隐藏字段中,或者甚至将信息放入加载时需要进入的文本框,标签,组合框等。
答案 6 :(得分:0)
如果你在谈论winforms(而不是webforms)那么你应该使用static class。使用静态成员来保留上下文对象的引用(或者您计划与其他表单共享的任何内容)。所有静态成员都保证在首次使用之前进行初始化。
类似的替代方案是使用单例设计模式来创建singleton class。
实际上,这两种解决方案只能使全局访问一个参考,这种功能有时会被过度使用,所以......小心。