WPF中常用的Window事件


  官方鏈接:https://msdn.microsoft.com/en-us/library/system.windows.window.statechanged(v=vs.110).aspx

1. Activated獲得焦點事件 和 Deactivated失去焦點的事件:

     Activated: 獲得焦點 (首次打開軟件時;由別的軟件切換回當前軟件時;點擊當前軟件在任務欄的按鈕時)

     Deactivated:失去焦點,與Activated正好相反,(Deactivated = de + activated)

     使用方法有兩種:

      第一種是在XAML中聲明,然后在后台書寫執行代碼:

<Window x:Class="WindowsFocusDemo20170117.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"  Activated="Window_Activated">

     在后台xxx.cs文件中書寫Window_Activated方法:

private void Window_Activated(object sender, EventArgs e)
 {
         System.Windows.MessageBox.Show("It is activating...");

}

      第二種是都在后台書寫代碼:

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.Activated += Window_Activated;
        }


        private void Window_Activated(object sender, EventArgs e)
        {
            System.Windows.MessageBox.Show("It is activating...");
  
        }
        
    }

       失去焦點Deactivated是用法與上述一致。

2. 關閉中Closing事件 和 已完全關閉Closed事件

      由名字可以看出,Closing事件會比Closed事件早執行,

      觸發Closing事件的條件:調用Close()方法;點擊軟件的關閉按鈕;或者使用快捷鍵Alt+F4關閉

      注意:

            如果窗口存在子窗口,那么調用Close()是不會觸發子窗口的Closing事件的,即子窗口不會關閉;

            如果想在關閉時也關閉所有子窗口,請調用Application的Shutdown()方法,用法如下:

Application.Current.Shutdown();//整個應用都關閉了,當然所有窗口都會關閉

            Closing事件可以理解為,Window窗體正准備關閉,此時還是可以取消關閉操作的,但Closed事件則是無力回天了;

            當用戶退出log off或者關閉電腦,Closing方法也不會觸發,但Application.SessionEnding事件會觸發

 

3.ContentRendered事件

 

4.StateChanged事件

     窗體狀態改變事件,窗體狀態WindowState是枚舉類型

public enum WindowState
    {
        Normal = 0,
        Minimized = 1,
        Maximized = 2,
    }

       所以我們可以利用WindowState來判斷窗體的狀態來實現我們的需求

5.LocationChanged事件

 

6.DpiChanged事件

 

7.SourceInitialized事件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM