官术网_书友最值得收藏!

1.3 WPF應(yīng)用程序的啟動(dòng)和終止

表1-1列出了和應(yīng)用程序生存期相關(guān)的事件和方法,通常在相關(guān)事件發(fā)生時(shí),WPF首先調(diào)用Application類中的相應(yīng)方法,然后再產(chǎn)生相關(guān)事件。所以,這些方法常常有相應(yīng)的事件相對(duì)應(yīng)。例如OnActivated方法和Activated事件、OnDeactivated方法和DeActivated事件,等等。

要考察WPF應(yīng)用程序的啟動(dòng)和終止過程,有兩種方法:其一是從Application類中派生出自己的類,并使用虛函數(shù)覆蓋技術(shù)來觀察Application類在運(yùn)行時(shí)調(diào)用虛函數(shù)的過程;其二是處理Application類中的相關(guān)事件。

表1-1 Application類中與應(yīng)用程序生存期相關(guān)的事件

讓我們來看看第一種方法:

  using System;
  using System.Collections.Generic;
  using System.Text;
  using System.Windows;
  namespace Yingbao.Chapter1
  {
  public class HelloWPF
  {
      [STAThread]
      public static void Main()
      {
        Window win = new Window();
        win.Title = "WPF application";
        win.Content = "Hello WPF!";
        Application app = new MainApp();
        app.Run(win);
      }
  }
  public class MainApp:Application
  {
      public MainApp()
        : base()
      {
      }
      protected override void OnActivated(EventArgs e)
      {
        Console.WriteLine("OnActivated");
        base.OnActivated(e);
      }
      protected override void OnExit(ExitEventArgs e)
      {
        Console.WriteLine("OnExit");
        base.OnExit(e);
      }
      protected override void OnDeactivated(EventArgs e)
      {
        Console.WriteLine("OnDeactivated");
        base.OnDeactivated(e);
      }
      protected override void OnStartup(StartupEventArgs e)
      {
        Console.WriteLine("OnStartup");
        base.OnStartup(e);
      }
      protected override void
      OnSessionEnding(SessionEndingCancelEventArgs e)
      {
        Console.WriteLine("OnSessionEnding");
        base.OnSessionEnding(e);
      }
  }
  }

這段程序的運(yùn)行結(jié)果如圖1-3所示。

圖1-3 考察Application中的事件

主站蜘蛛池模板: 和顺县| 竹北市| 汉源县| 靖宇县| 灌阳县| 阳原县| 临澧县| 辽阳县| 福鼎市| 崇仁县| 乌审旗| 澄迈县| 资阳市| 湘西| 方正县| 固始县| 伊宁县| 淳化县| 卓尼县| 黄浦区| 建湖县| 临沂市| 黎川县| 静宁县| 汉寿县| 沁阳市| 承德市| 永修县| 宁明县| 和龙市| 宁陕县| 呼图壁县| 措勤县| 务川| 承德市| 丹江口市| 泽普县| 鄢陵县| 和硕县| 威宁| 衡山县|