微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Windows应用程序中是否有像SESSION?

在Windows应用程序中是否有像SESSION? 我想存储几个值在表单之间持久。

例如:第一个表单有一些checkBox,第三个表单相应地处理它们。 所以我需要将选中的checkBox存储在某个地方。

用python启动一个独立的进程

简单的IParallelEnumerable <T>教程

Sed不会pipe道到一个文件

如何将WinForms应用程序最小化到通知区域?

切换RIDEV_CAPTUREMOUSE |时出现奇怪的行为 RIDEV_NOLEGACY

您只能通过放置您的CheckBox的这个表单的属性来暴露您的CheckBoxes Checked状态,并从您的第三个或Process表单访问这些属性

public partial class MainForm : Form { // We assume we have let's say three CheckBoxes named chkFirst,chkSecond and chkThird public bool IsFirstChecked { get { return chkFirst.Checked; } } public bool IsSecondChecked { get { return chkSecond.Checked; } } public bool IsThirdChecked { get { return chkThird.Checked; } } // Calling this form from where these checked states will be processed... // Let's suppose we have to click a button to launch the process,for instance... private void btnLaunchProcess(object sender,EventArgs e) { ProcessForm f = new ProcessForm(); f.Parent = this; if (DialogResult.OK == f.ShowDialog()) { // Process accordingly if desired,otherwise let it blank... } } } public partial class ProcessForm : Form { // Accessing the checked state of CheckBoxes private void Process() { if ((this.Parent as MainForm).FirstChecked) // Process according to first CheckBox.Checked state. else if ((this.Parent as MainForm).SecondChecked) // Process according to second CheckBox.Checked state. else if ((this.Parent as MainForm).ThirdChecked) // Process according to third CheckBox.Checked state. } }

请考虑一下,我把这个代码放在我头上,所以可能不会编译。 无论如何,我希望这给你一个如何在你的表格中传递你的价值的想法。

Web和WinForm编程最大的区别在于Web是无状态的。 SESSION和VIEWSTATE是解决方法,允许保存值。

WinForms是有状态的,所以你不需要通过SESSION和VIEWSTATE类型的变量。 只要对象存在,值就会被保留。

如果您在同一个应用程序中讨论不同的表单,那么只需在一个类上创建一些静态成员,它将在可执行文件的生命周期中持久化。

如果您使用Visual Studio,则可以使用app.config(或“项目属性”中的“设置”部分),或者只是序列化值并将其存储在某个文件中。

如果你想在同一个应用程序的独立执行之间保持数据(就像在HTTP服务器中的并发请求服务一样),那么只需写出一些XML或者在你的运行时/平台中使用一个mashalling / serializing系统(不知道C# )。

然后再导入它。 只要注意你的并发控制。

如果这只是一个普通的单用户窗口应用程序,创建一个类来模拟你想要传递的状态,并在你的窗体构造函数中要求它:

internal class ApplicationState { // Store the selected checkBox values here,for example public List<int> SelectedProductIds { get; } // ... additional state ... } internal class EditOrderForm: Form { private ApplicationState applicationState; public EditCustomerForm(ApplicationState applicationState) { this.applicationState = applicationState; } // Rest of the code }

您可以使用静态变量而不是实例 – 但这些只是全局变量,使您的代码难以阅读和维护。

如果您希望在执行会话之间以每个用户为基础存储数据,则应考虑隔离存储。

不要混乱安装目录

不会导致AnitVirus软件出现问题

包括.Net对象的操作系统的一部分,不需要另外安装

已经与Windows安全模型一起工作

存在于每个用户的基础上,因此保存的设置将为每个用户分开

可以序列化/反序列化对象直接进入它

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐