13,005
回編集
299行目: | 299行目: | ||
== ウインドウイベントを処理する例 == | == ウインドウイベントを処理する例 == | ||
以下の例では、ウインドウの主要なイベントである[開く]ボタンおよび[閉じる]ボタンを押下した時のイベント処理を示している。<br> | |||
<br> | |||
* Openedイベント (ウインドウが開いた時) | |||
*: Openedイベントは、ウインドウが画面に表示された直後に発生する。 | |||
*: OnWindowOpenedメソッドで処理される。 | |||
*: <br> | |||
*: 例: ウインドウを開いた直後に初期化処理を行う場合に使用する。(データの読み込み、UIコンポーネントの設定、外部リソースとの接続等) | |||
*: <br> | |||
* Closingイベント (ウインドウが閉じる直前) | |||
*: Closingイベントは、ウインドウを閉じる直前 (例: [閉じる]ボタンを押下した直後) に発生する。 | |||
*: OnWindowClosingメソッドで処理される。 | |||
*: <br> | |||
*: 例: ユーザが誤ってウインドウを閉じることを防ぐ、または、保存されていない変更がある場合に警告を表示する等のロジックに適している。 | |||
*: <br> | |||
* Closedイベント (ウインドウが閉じられた後) | |||
*: ウインドウが完全に閉じられた後に発生する。 | |||
*: OnWindowClosedメソッドで処理される。 | |||
*: <br> | |||
*: 例: リソースの解放、ログの記録、他のウインドウへの通知等、ウインドウが閉じられた後のクリーンアップ処理に適している。 | |||
<br> | |||
<syntaxhighlight lang="c#"> | <syntaxhighlight lang="c#"> | ||
using Avalonia.Controls; | |||
using Avalonia.Interactivity; | |||
using MsBox.Avalonia; | |||
using MsBox.Avalonia.Enums; | |||
public class EventHandlingWindow : Window | public class EventHandlingWindow : Window | ||
{ | { | ||
316行目: | 341行目: | ||
} | } | ||
private void OnWindowClosing(object sender, WindowClosingEventArgs e) | private async void OnWindowClosing(object sender, WindowClosingEventArgs e) | ||
{ | { | ||
var | // 一時的にキャンセルして、ダイアログの結果を待つ | ||
e.Cancel = true; | |||
// ウインドウの閉じる操作を一時的に中断する場合、ユーザに終了確認ダイアログを表示する | |||
var messageBox = MessageBoxManager.GetMessageBoxStandardWindow("Confirm", | |||
"Are you sure you want to close?", | |||
ButtonEnum.YesNo); | |||
var result = await messageBox.Show(); | |||
if (result == ButtonResult.Yes) | |||
{ // [Yes]ボタンを押下した場合、ウインドウを閉じる | |||
e.Cancel = false; | |||
} | |||
} | } | ||