众所周知,在一般的WinForm程序设计时,登录成功后登录窗口与主窗口的切换上,大多使用的方法有两种。
第一种:
默认是登录窗体,登录成功后,利用全局变量传递登录信息,然后登录窗口关闭,显示主窗体。
第二种:
默认是主窗体,在主窗体初始化前,显示登录窗体,登录成功后,利用全局变量传递登录信息,然后关闭登录窗体,继续完成初始化主窗体和显示内容。
在WPF中实际上可以更简单,方法如下:
1、定义一个全局类 Globals.cs 用全局静态变量来存储登录帐号信息,内容如下
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WPF_Test_LoginForMain { public class Globals { private static string _UserName = ""; public static string UserNam { get { return _UserName; } set { _UserName = value; } } } }
2、程序默认运行是登录窗体,登录成功的处理如下:
private void button1_Click(object sender, RoutedEventArgs e) { if (textBox1.Text.Equals("test") && textBox2.Text.Equals("test")) { //将登录信息写入全局静态变量 Globals.UserName = textBox1.Text; //提示 MessageBox.Show(Globals.UserName + "你好,登录成功!"); //创建主窗口对象 MainWindow mwin = new MainWindow(); //指定程序的主窗口为上述对象 Application.Current.MainWindow = mwin; //关闭当前登录窗体 this.Close(); //显示程序主窗体 mwin.Show(); } else { MessageBox.Show("二货,用户名密码错了!"); } }
3、在主窗体(或程序中任意位置)通过get全局静态变量获取当前登录信息。
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); textBlock1.Text = Globals.UserName + " 你好,欢迎使用!"; } }
这样,就不用在做窗体间的数据传递了。
附:Application.Current的使用
WPF程序对应一个Application对象,当前的Application对象可以通过Application.Current获取,通过获取到的Application对象,我们可以做以下的事情:
1.Application.Current.FindResource("资源名"); //获取程序中定义的资源
2.Application.Current.MainWindow; //获取程序中定义的主窗体
3.Application.Current.Properties["MyProperty"]; //获取或设置应用范围的属性
4.Application.Current.Shutdown(); //终止当前程序
5.Application.Current.ShutdownMode =
ShutdownMode.OnLastWindowClose ; //设置程序关闭的方式
OnLastWindowClose —— 最后一个窗体关闭时关闭程序
OnMainWindowClose —— 主窗体关闭时关闭程序
OnExplicitShutdown —— 需要显示调用Application.Current.Shutdown()去关闭程序,否则程序将在后台继续运行
6.Application.Current.Windows; //获取程序中运行的所有窗体
一般主窗体会是第一个运行的窗体,因此此时Application.Current.Windows[0]等同于Application.Current.MainWindow
评论回复