枕上从妨一夜睡,灯前读尽十年诗。这篇文章主要讲述Wpf Application类的任务:相关的知识,希望能为你提供帮助。
首先Application能够实现几种功能,比如访问命令行参数,获取当前程序类的实例,以及常见的单窗口程序实例.
访问命令行参数:第一种: 获取获取方式使用Environment.GetCommandLineArgs();
第二种: 响应 Application 类的 OnStartup() 事件.
Example:
/// < summary> /// 通过类属性=> 调试=> 命令行参数执行相应的动作 /// < /summary> /// < param name="sender"> < /param> /// < param name="e"> < /param> private void Application_Startup(object sender, StartupEventArgs e) { bool startMinmized = false; for (int i = 0; i < e.Args.Length; i++) { if (e.Args[i] == "/StartMinmized") startMinmized = true; }MainWindow win = new MainWindow(); if (startMinmized) { win.WindowState = WindowState.Minimized; win.Content = "当前命令参数为:" + e.Args[0]; } win.Show(); }
文章图片
获取当前程序实例:Application.Current 属性访问 Application 类的实例. Application 对象提供了几个相当有用的属性: MainWindow 开发人员可以访问这个属性来获取应用程序的主窗口. Windows 集合属性用于获取当前打开的引用程序窗口的集合. Properties 属性可以访问和设置应用程序的设置, Resources 属性可以访问和设置应用程序的资源. 单例应用程序(1)
/// < summary> /// App.xaml 的交互逻辑 /// < /summary> public partial class App : Application { /// < summary> /// Mutex 在System.Threading命名空间中,成为同步基元,或者成为互斥元. /// 当创建一个引用程序类时,将同时创建一个系统范围内的命名的Mutex对象. /// 这个互斥单元在整个操作系统中都是可见的. /// < /summary> Mutex mutex; protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); string mutexName = "SingleInstanceApplication"; bool CreatedNew; //判断是否已经创建相同实例名称的应用程序 mutex = new Mutex(true, mutexName, out CreatedNew); if (!CreatedNew) { MessageBox.Show("已经存在一个引用程序势力"); Shutdown(); } } }
单例应用程序(2)创建类似于Excel程序单个进程多个窗体程序. //程序入口
namespace SingleInstanceWithCommunication { public class Startup { [STAThread] public static void Main(string[] args) { SingleApplicationBase sab = new SingleApplicationBase(); sab.Run(args); } } }
//单例程序基础类,并且承 FIRST ADD DLL:Microsoft.VisualBasic; using Microsoft.VisualBasic.ApplicationServices
namespace SingleInstanceWithCommunicationhCommunication { public class SingleApplicationBase : WindowsFormsApplicationBase { public SingleApplicationBase() { //设置应用程序为单例程序 this.IsSingleInstance = true; }//SingleInstanceWithCommunication.App App wpfApp; protected override bool OnStartup(StartupEventArgs eventArgs) { wpfApp = new App(); wpfApp.Run(); return false; }protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs) { //当前程序开启后,继续开启新程序会触发OnStartupNextInstance事件,程序作出相应动作. //可以获取当前参数在已开启的程序中操作相应动作. base.OnStartupNextInstance(eventArgs); if (eventArgs.CommandLine.Count > 0) wpfApp.ShowWindowText(eventArgs.CommandLine[0]); } } }
//关于APP变量的相关代码
namespace SingleInstanceWithCommunication { /// < summary> /// App.xaml 的交互逻辑 /// < /summary> public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); MainWindow win = new SingleInstanceWithCommunication.MainWindow(); this.MainWindow = win; win.Show(); if (e.Args.Length > 0) ShowWindowText(e.Args[0]); }public void ShowWindowText(string fileName) { Window1 win = new Window1(); win.Title = fileName; ((MainWindow)this.MainWindow).lstBox.Items.Add(fileName); win.Owner = this.MainWindow; win.LoadFile(fileName); win.Show(); } } }
【Wpf Application类的任务:】
推荐阅读
- Android Notification的使用 - z
- android之使用GridView+仿微信图片上传功能(附源代码)
- java mybatis学习之$和#区别,mapper代理接口,动态SQL,在日志中输出mybatis的sql语句
- 使用Tomcat服务器在Eclipse IDE中创建JSP
- 如何修复Windows 10中的intelppm.sys蓝屏错误(分步指南)
- 如何修复错误代码0x80070052(解决办法分步指南)
- 如何修复Windows 10中的XBOX错误代码0x80070005(解决办法)
- 如何修复Java错误代码1618(解决办法介绍)
- 如何修复Xbox One错误代码0x8000ffff(解决办法指南)