Powershell WPF windowのイベントをトレースするサンプル

EXCEL

Windowクラス のイベント発生状況を確認したかったため、各イベントが発生する都度、コンソールに結果出力させるサンプル、これを実行してトレース結果の動きを見ているとWindowのイベント発生契機の理解が深まる。

コード例

add_XXXX.Invokeの中で、自作のトレース用のスタティックメソッドを呼び出すようにしている。

結果(起動時)

IsVisibleChanged、SizeChanged、LayoutUpdated、SourceInitialized、Activated あたりが初期化時のイベントのようだ。

sVisibleChangedこの要素の IsVisible プロパティの値が変更されたときに発生します。(継承元 UIElement)
SizeChangedこの要素の ActualHeight プロパティまたは ActualWidth プロパティの値が変更されると発生します。(継承元 FrameworkElement)
SourceInitializedこのイベントは、Win32 との相互運用をサポートするために発生します。 以下を参照してください。HwndSource
LayoutUpdated現在の Dispatcher に関連付けられた各種ビジュアル要素のレイアウトが変更されたときに発生します。(継承元 UIElement)
Activatedウィンドウがフォアグラウンド ウィンドウになったときに発生します。

しかし、起動時に一番発生しそうな(それっぽい)Inithalizedは呼ばれていなかった。なぜだろう

Initializedこの FrameworkElement が初期化されるときに発生します。 このイベントと同時に、IsInitialized プロパティの値が false (未定義) から true に変更されます。(継承元 FrameworkElement)
PS C:\Users\papanda925\Documents\WinPythonDev\dev> . "c:\Users\papanda925\Documents\WinPythonDev\dev\PSEventNotificationChecker.ps1.ps1"
2022/08/29 19:01 MainWindowEvent Trace Start
2022/08/29 19:01 IsVisibleChanged
2022/08/29 19:01 SizeChanged
2022/08/29 19:01 LayoutUpdated
2022/08/29 19:01 LayoutUpdated
2022/08/29 19:01 LayoutUpdated
2022/08/29 19:01 LayoutUpdated
2022/08/29 19:01 LayoutUpdated
2022/08/29 19:01 LayoutUpdated
2022/08/29 19:01 SourceInitialized
2022/08/29 19:01 Activated
2022/08/29 19:01 PreviewGotKeyboardFocus
2022/08/29 19:01 IsKeyboardFocusWithinChanged
2022/08/29 19:01 IsKeyboardFocusedChanged
2022/08/29 19:01 GotKeyboardFocus
2022/08/29 19:01 LayoutUpdated
2022/08/29 19:01 LayoutUpdated
2022/08/29 19:01 LayoutUpdated
2022/08/29 19:01 LayoutUpdated
2022/08/29 19:01 LayoutUpdated
2022/08/29 19:01 LayoutUpdated
2022/08/29 19:01 Unloaded
2022/08/29 19:01 Loaded
2022/08/29 19:01 MouseEnter
2022/08/29 19:01 QueryCursor
2022/08/29 19:01 PreviewMouseMove
2022/08/29 19:01 MouseMove
2022/08/29 19:01 ContentRendered
2022/08/29 19:01 QueryCursor
2022/08/29 19:01 PreviewMouseMove
2022/08/29 19:01 MouseMove
2022/08/29 19:01 QueryCursor
2022/08/29 19:01 PreviewMouseMove
2022/08/29 19:01 MouseMove
2022/08/29 19:01 QueryCursor
2022/08/29 19:01 PreviewMouseMove
2022/08/29 19:01 MouseMove
2022/08/29 19:01 QueryCursor
2022/08/29 19:01 PreviewMouseMove
2022/08/29 19:01 MouseMove
2022/08/29 19:01 QueryCursor
2022/08/29 19:01 PreviewMouseMove
2022/08/29 19:01 MouseMove
2022/08/29 19:01 QueryCursor
2022/08/29 19:01 PreviewMouseMove
2022/08/29 19:01 MouseMove
2022/08/29 19:01 QueryCursor
2022/08/29 19:01 PreviewMouseMove
2022/08/29 19:01 MouseMove

・・・・・・

結果、終了(xボタンクリック時)

Closing と Closed が呼ばれている これがそんなものかなと思える。

Closedウィンドウが閉じるときに発生します。
ClosingClose() が呼び出された直後に発生します。これを処理して、ウィンドウが閉じるのをキャンセルすることができます。
・・・・・・
2022/08/29 19:01 MouseMove
2022/08/29 19:01 QueryCursor
2022/08/29 19:01 PreviewMouseMove
2022/08/29 19:01 MouseMove
2022/08/29 19:01 QueryCursor
2022/08/29 19:01 PreviewMouseMove
2022/08/29 19:01 MouseMove
2022/08/29 19:01 QueryCursor
2022/08/29 19:01 PreviewMouseMove
2022/08/29 19:01 MouseMove
2022/08/29 19:01 QueryCursor
2022/08/29 19:01 PreviewMouseMove
2022/08/29 19:01 MouseMove
2022/08/29 19:01 QueryCursor
2022/08/29 19:01 PreviewMouseMove
2022/08/29 19:01 MouseMove
2022/08/29 19:01 MouseLeave
2022/08/29 19:01 Closing
2022/08/29 19:01 IsVisibleChanged
2022/08/29 19:01 Deactivated
2022/08/29 19:01 IsKeyboardFocusWithinChanged
2022/08/29 19:01 IsKeyboardFocusedChanged
2022/08/29 19:01 LostKeyboardFocus
2022/08/29 19:01 Closed
2022/08/29 19:01 Event Trace End

引用

Window クラス (System.Windows) | Microsoft Docs

ライセンス:本記事のテキスト/コードは特記なき限り CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。

コメント

タイトルとURLをコピーしました