English 中文(简体)
c# WinForms表在E.Cancel = 表格中的真实性之后仍然关闭。
原标题:c# WinForms form still closes after setting e.Cancel = true in Form_FormClosing event

这是有关的法典:

    private void FormAccounting_FormClosing(object sender, FormClosingEventArgs e)
    {
        Properties.Settings.Default.FormAccountingLocation = this.Location;
        Properties.Settings.Default.Save();
        if (IsEditing)
        {
            MessageBox.Show("Please save or cancel open transactions before closing the accounting window.", "Open Transactions", MessageBoxButtons.OK, MessageBoxIcon.Information);
            e.Cancel = true;
        }
    }

我在<代码>e.Cancel = 是的;行文,以确保执行。

表格在点击Ok之后立即关闭。

这里指的是:

    private void buttonAccounts_Click(object sender, EventArgs e)
    {
        FormAccounting NewFormAccounting = new FormAccounting();
        NewFormAccounting.Show();
    }
最佳回答

安排形式密切活动有助于防止:

  1. User closing the form
  2. Application.Exit from exiting the application
  3. Code from calling Form.Close on the form

但它没有努力防止:

  1. User closing application s main form
  2. Code calling Form.Dispose on the form
  3. Code calling Form.Close on the application s main window

最后3起案件甚至不会引发非主要形式上的近似事件,因此形式消失,没有机会取消。 也许你的申请使形式首先以前三种方式之一告终,这触发了事件,而后三种方式之一(或类似方式)则不会引发事件,迫使形式关闭。

Edit: Add this function to your form s code and it will allow you to review in the debugger what the call stack looks like when your window is getting closed so you can see what is actually causing it:

  protected override void DestroyHandle()
  {
     System.Diagnostics.Debugger.Break();
     base.DestroyHandle();
  }
问题回答

暂无回答




相关问题
Bring window to foreground after Mutex fails

I was wondering if someone can tell me what would be the best way to bring my application to the foreground if a mutex was not able to be created for a new instance. E.g.: Application X is running ...

How to start WinForm app minimized to tray?

I ve successfully created an app that minimizes to the tray using a NotifyIcon. When the form is manually closed it is successfully hidden from the desktop, taskbar, and alt-tab. The problem occurs ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

Handle DataTable.DataRow cell change event

I have a DataTable that has several DataColumns and DataRow. Now i would like to handle an event when cell of this DataRow is changed. How to do this in c#?

Apparent Memory Leak in DataGridView

How do you force a DataGridView to release its reference to a bound DataSet? We have a rather large dataset being displayed in a DataGridView and noticed that resources were not being freed after the ...

ALT Key Shortcuts Hidden

I am using VS2008 and creating forms. By default, the underscore of the character in a textbox when using an ampersand is not shown when I run the application. ex. "&Goto Here" is not ...

WPF-XAML window in Winforms Application

I have a Winforms application coded in VS C# 2008 and want to insert a WPF window into the window pane of Winforms application. Could you explain me how this is done.

热门标签