学习资料:
《Application = Code + Markup》Charles Petzold著
WPF牛吗?
绝对牛!看三点就知道:
一> Windows Presentation Foundation(WPF)是微软新一代图形系统,基于DirectX 9/10技术的图形向量渲染引擎造就前所未有的3D界面
二> 设计和代码分离
三> c/s和b/s的编程统一(你再不用为c/s编程学WindowForm,b/s编程学WebForm)
在WPF中如何实现传统的先启动登录==>后启动主程序的运行机制呢?可别小看这简单的问题哟...
代码如下:
- using System;
- using System.IO;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- namespace WpfApp
- {
- class myApp:Application
- {
- [STAThread]
- public static void Main()
- {
- myApp app = new myApp();
- //经反复测试得出的结论:这里必须用OnExplicitShutdown强调显式结束应用程序,先启动登录==〉后启动主程序的运行机制才能得以实现
- app.ShutdownMode = ShutdownMode.OnExplicitShutdown;
- app.Run();
- }
- private void win_Closed(object sender, System.EventArgs e)
- {
- Application.Current.Shutdown(); //显式结束应用程序
- }
- protected override void OnStartup(StartupEventArgs e)
- {
- base.OnStartup(e);
- //MessageBox.Show(e.Args[2]); //命令行参数
- Window winDlg = new Window1();
- winDlg.ShowInTaskbar = false;
- winDlg.WindowStartupLocation = WindowStartupLocation.CenterScreen;
- //需要说明的是:WindowsForm中的DialogResult枚举在WPF中已经消失。害我折腾许久,最后在国外网站才找到。。。
- //bool dlgResult = (bool)winDlg.ShowDialog(); //强类型转换,也行
- bool? dlgResult = winDlg.ShowDialog(); //注意这里的写法,感觉怪怪。。。
- if (dlgResult.Value ==true)
- {
- Window winMain = new Window();
- this.MainWindow = winMain;
- winMain.WindowStartupLocation = WindowStartupLocation.CenterScreen;
- winMain.Closed += new EventHandler(win_Closed);
- winMain.Title = "WPF。。。学习。。。哈哈。。。";
- //给主窗体加背景图案,详见Charles Petzold名著《Application = Code + Markup》
- //Uri uri = new Uri(@"E:\icons\QT_0605_11\QT_0605_11\ladybug.png");
- Uri uri = new Uri(Environment.GetEnvironmentVariable("windir") + @"\Web\Wallpaper\img24.jpg");
- BitmapImage bmp = new BitmapImage(uri);
- Image img = new Image();
- img.Stretch = Stretch.Fill;
- img.Source = bmp;
- winMain.Content = img;
- winMain.Show();
- }
- else
- {
- Application.Current.Shutdown(); //显式结束应用程序
- }
- }
- }
- }
转载于:https://blog.51cto.com/studybao/1180725