webForm中,程序执行在Web服务器上,而界面执行在客户机的浏览器上,并且基本Web服务器是无状态的,因此ASP、ASP.Net等复杂而高级的服务机制为客户端维护Session保存状态。
Web服务器和数据库服务器或者业务服务器之间,可不是用什么Session来识别Web应用程序的客户身份的,而是直接查询数据库或者查询业务服务器的业务对象。
WinForm程序下载并且常驻客户端内存,不需要服务器来执行代码,在客户机器上运行的winForm就相当于在网站上运行的ASP.NET(而不是相当于客户机浏览器)。没有服务器端也就没有什么Session的必要。
我自己的浅显理解就是:
web是多人同时访问一个程序,为分清到底是哪个人访问,用Session来标注。
而Winform则是一人访问一个程序,在一个客户端只有一个使用者,所以不需要区分。
如果想得到一个全局变量可以使用以下方法:
定义一个类,增加public static全局变量:
namespace WindowsFormsApp1
{
/// <summary>
/// 保存当前登录的账号信息
/// </summary>
public class Account
{
/// <summary>
/// 用户名
/// </summary>
public static string UserName = "";
/// <summary>
/// 密码
/// </summary>
public static string Password = "";
}
}
其他类直接根据类名来调用这个static变量即可:
private void button1_Click(object sender, EventArgs e)
{
Account.UserName = this.textBox1.Text;
Account.Password = this.textBox2.Text;
if (Account.UserName.Equals("7788") && Account.Password.Equals("1"))
{
MessageBox.Show("登陆成功");
this.Hide();
new LoginSuccess().Show();
}
else
{
MessageBox.Show("用户名或密码不正确!");
}
}