Wpf Application類的任務:

來源:互聯網
上載者:User

標籤:down   shu   任務   summary   程式   es2017   param   sources   互動   

首先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類的任務:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.