如何从另一个方法取消TextBox_Validating事件c#

时间:2014-12-31 09:05:29

标签: c#

我限制txtDate_Validating,如果用户将txtDate.text留空,则会出现消息框!

但是如果用户关闭表单,仍然会显示消息!!

那么..如何从textbox_Validating事件取消Form_Closing事件?

...谢谢

2 个答案:

答案 0 :(得分:0)

将此添加到您的代码中:

protected override void OnFormClosing(FormClosingEventArgs e)
{
    Cursor.Current = Cursors.WaitCursor;

    try
    {
        base.OnFormClosing(e);

        if (e.CloseReason == CloseReason.WindowsShutDown) return;

        // Confirm user wants to close
        switch (MessageBox.Show(this, "\tAre you sure you want to close ?", "Closing", MessageBoxButtons.YesNo))
        {
            case DialogResult.No:
                e.Cancel = true;
                break;
            default:
                break;
        }
    }

    finally
    {
        Cursor.Current = Cursors.Default;
    }
}

答案 1 :(得分:0)

你要求的并不是那么简单。 控件中的验证事件在丢失焦点事件之前上升,因此 之前用户可以关闭窗口。 如果我是你,我会使用ErrorProvider而不是MessageBox警告。

这样,如果用户关闭表单,屏幕上就不会有恼人的消息。