winforms アプリケーションでフォーム ウィンドウを閉じたときに、ユーザーにデータを保存するように求めています。フォームの右上隅にある赤いボックスをクリックすると、ユーザーにプロンプトを表示する方法がわかりません。
私のアプリケーションには現在、ブール値のフラグがあり、textchanged イベントで True に設定されています。したがって、赤いボックスによってトリガーされるイベントのブール値を確認するだけで済みます。
何かアドバイス?
winforms アプリケーションでフォーム ウィンドウを閉じたときに、ユーザーにデータを保存するように求めています。フォームの右上隅にある赤いボックスをクリックすると、ユーザーにプロンプトを表示する方法がわかりません。
私のアプリケーションには現在、ブール値のフラグがあり、textchanged イベントで True に設定されています。したがって、赤いボックスによってトリガーされるイベントのブール値を確認するだけで済みます。
何かアドバイス?
FormClosing
イベントを処理する必要があります。このイベントは、ユーザーがタイトル バーの [X] ボタンをクリックしたか、その他の手段でフォームが閉じられる直前に発生します。
フォームが閉じられる前にイベントが発生するため、close イベントをキャンセルする機会が提供されます。FormClosingEventArgs
パラメータでクラスのインスタンスが渡されe
ます。e.Cancel
プロパティを True に設定すると、保留中のクローズ イベントをキャンセルできます。
例えば:
Private Sub Form_Closing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
If Not isDataSaved Then
' The user has unsaved data, so prompt to save
Dim retVal As DialogResult
retVal = MessageBox.Show("Save Changes?", YesNoCancel)
If retVal = DialogResult.Yes Then
' They chose to save, so save the changes
' ...
ElseIf retVal = DialogResult.Cancel Then
' They chose to cancel, so cancel the form closing
e.Cancel = True
End If
' (Otherwise, we just fall through and let the form continue closing)
End If
End Sub
フォームのOnFormClosingメソッドをオーバーライドすると、変更が行われたことをユーザーに通知する機会があり、フォームを閉じるのをキャンセルする機会があります。
このイベントは、 CloseReasonプロパティ (フォームが閉じている理由を示す) を持つFormClosingEventArgsインスタンスと、フォームが閉じないように True に設定できる Cancel プロパティを提供します。
このコードをC#の希望に実装するので、役に立ちます
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
if (PreClosingConfirmation() == System.Windows.Forms.DialogResult.Yes)
{
Dispose(true);
Application.Exit();
}
else
{
e.Cancel = true;
}
}
private DialogResult PreClosingConfirmation()
{
DialogResult res = System.Windows.Forms.MessageBox.Show(" Do you want to quit? ", "Quit...", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
return res;
}
FormClosingイベントが必要です