新しいイベントを開くときに定型を閉じようとしています。 フォーミュラを閉じるときに、私はクローズイベントでいくつかの特別なロジックを処理したいと思います。 しかし、closingイベントは、FormClosingイベント、Closingイベント、抽象基本クラス、または手動添付のイベントform_FormClosing
では呼び出されません。MDIの子フォームでFormClosingイベントが呼び出されない
xをクリックして手動でフォームを閉じると、すべてのイベントが正常に終了します。 Close()
メソッドの呼び出しが失敗します。
問題を解決するためのリマインドがありますか?
MdiParent:
private Form _currentForm;
private void ShowForm<T>() where T : Form
{
if (_currentForm != null && !_currentForm.IsDisposed)
{
_currentForm.Hide();
_currentForm.Close();
}
var form = MdiChildren.FirstOrDefault(f => f.GetType() == typeof(T));
if (form == null)
{
form = _formFactory.CreateForm<T>();
form.MdiParent = this;
form.WindowState = FormWindowState.Maximized;
form.FormClosing += form_FormClosing;
_currentForm = form;
MdiBackground.Hide();
form.Show();
}
else
{
ActivateMdiChild(form);
form.Activate();
}
}
void form_FormClosing(object sender, FormClosingEventArgs e)
{
// will not be called
}
抽象汎用のMDI子フォーム:
public abstract partial class BaseForm<TEntity> : Form where TEntity : class, IEntity
{
protected override void OnClosing(CancelEventArgs e)
{
// wil not be called
if (EditMode == EditModes.Editable)
{
MessageBox.Show(this, "Please commit or abort your changes");
e.Cancel = true;
}
base.OnClosing(e);
}
}
私はすでにこれを行いました。 – Rookian
FormClosed()についてはどうですか? –
OH申し訳ありません私はあなたの質問が間違っていると思います。 –