Window.Closing イベント
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Close() が呼び出された直後に発生します。これを処理して、ウィンドウが閉じるのをキャンセルすることができます。
public:
event System::ComponentModel::CancelEventHandler ^ Closing;
public event System.ComponentModel.CancelEventHandler Closing;
member this.Closing : System.ComponentModel.CancelEventHandler
Public Custom Event Closing As CancelEventHandler
イベントの種類
例外
Visibility が設定されているか、ウィンドウを閉じている間に Show()、ShowDialog()、または Close() が呼び出されました。
例
次の例では、 Window 閉じるのにユーザーの介入が必要かどうかを判断する を示します。
<Window
x:Class="CSharp.DataWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Closing="DataWindow_Closing"
>
<Grid>
<TextBox Name="documentTextBox" AcceptsReturn="True" AcceptsTab="True" TextChanged="documentTextBox_TextChanged"></TextBox>
</Grid>
</Window>
using System; // EventArgs
using System.ComponentModel; // CancelEventArgs
using System.Windows; // window
namespace CSharp
{
public partial class DataWindow : Window
{
// Is data dirty
bool isDataDirty = false;
public DataWindow()
{
InitializeComponent();
}
void documentTextBox_TextChanged(object sender, EventArgs e)
{
this.isDataDirty = true;
}
void DataWindow_Closing(object sender, CancelEventArgs e)
{
MessageBox.Show("Closing called");
// If data is dirty, notify user and ask for a response
if (this.isDataDirty)
{
string msg = "Data is dirty. Close without saving?";
MessageBoxResult result =
MessageBox.Show(
msg,
"Data App",
MessageBoxButton.YesNo,
MessageBoxImage.Warning);
if (result == MessageBoxResult.No)
{
// If user doesn't want to close, cancel closure
e.Cancel = true;
}
}
}
}
}
Imports System ' EventArgs
Imports System.ComponentModel ' CancelEventArgs
Imports System.Windows ' window
Namespace VisualBasic
Partial Public Class DataWindow
Inherits Window
' Is data dirty
Private isDataDirty As Boolean = False
Public Sub New()
InitializeComponent()
End Sub
Private Sub documentTextBox_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
Me.isDataDirty = True
End Sub
Private Sub DataWindow_Closing(ByVal sender As Object, ByVal e As CancelEventArgs)
MessageBox.Show("Closing called")
' If data is dirty, notify user and ask for a response
If Me.isDataDirty Then
Dim msg As String = "Data is dirty. Close without saving?"
Dim result As MessageBoxResult = MessageBox.Show(msg, "Data App", MessageBoxButton.YesNo, MessageBoxImage.Warning)
If result = MessageBoxResult.No Then
' If user doesn't want to close, cancel closure
e.Cancel = True
End If
End If
End Sub
End Class
End Namespace
注釈
Closing は、ウィンドウが閉じられている (たとえば、 Close が呼び出されたとき) を検出するために処理できます。 さらに、 を使用して、 Closing ウィンドウが閉じないようにすることができます。 ウィンドウが閉じないようにするには、 引数の プロパティを CancelCancelEventArgs に true
設定します。
イベントは Closing 、 が呼び出されたとき Close 、ウィンドウの [閉じる] ボタンがクリックされた場合、またはユーザーが Alt キーを押しながら F4 キーを押すと発生します。
を使用して Show所有者ウィンドウによって所有ウィンドウが開き、所有者ウィンドウが閉じている場合、所有ウィンドウの Closing イベントは発生しません。 ウィンドウの所有者が閉じている場合 (「」を参照) OwnerClosing は、所有ウィンドウでは発生しません。
Shutdownが呼び出されると、各ウィンドウのClosingイベントが発生します。 ただし、 が取り消された場合 Closing 、取り消しは無視されます。
ユーザーがログオフまたはシャットダウンしたためにセッションが終了した場合、 Closing は発生しません。アプリケーションの終了を取り消すコードを実装するための ハンドル SessionEnding 。
アプリケーションの有効期間中にウィンドウの表示と非表示を複数回行う場合に、ウィンドウを表示するたびにウィンドウを再インスタンス化したくない場合は、イベントを Closing 処理し、取り消し、メソッドを Hide 呼び出すことができます。 その後、同じインスタンスで を呼び出 Show して、再度開くことができます。
適用対象
こちらもご覧ください
.NET