用新的FormClosing args替换过时的Closing事件

时间:2014-07-31 17:39:35

标签: c# visual-studio-2012 user-controls event-handling formclosing

我们目前正在通过将它们(32位-2005 VC#)构建到64位来更新我们的数据库系统和所有文件。我遇到的是当使用 this.closing + = new CancelEventArgs(事件名称)进行作业时数据泄漏; 我发现它已经过时了,正如其他同事所说的那样寻找切换到使用FormClosing事件的方法。

...

旧代码和事件前

this.Closing += new CancelEventHandler(AssignUsers_Closing);


private void AssignUsers_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    try
    {
        "some event"

    }
    catch (Exception ex)
    {
        ShowException se = new ShowException();
        se.ShowDialog(ex);
    }
}

这是我想转换为FormClosing事件的地方,以便Windows可以为我处理数据泄漏,而不必为.dispose()函数添加这样的每个事件的 - =语句。

创意/新代码

private void AssignUserForm_FormClosing(object sender, FormClosingEventArgs e)
{
    try
    {
        *code*
        // Use e.cancel to test whether to close the form or not.
    }
    catch (Exception ex)
    {
        ShowException se = new ShowException();
        se.ShowDialog(ex);
    }
}

这是否可行?有关如何进行此更改的任何建议吗?

编辑:对我的问题进行更好的概述

更改此内容:

public AssignUserForm()
        {
            InitializeComponent();
            InitMe();

            try
            {
                Database.ApplyFieldSecurity(this);
            }

            catch { }
        }

        private void InitMe()
        {
            try
            {
                this.Closing += new CancelEventHandler(AssignUsers_Closing);

                // Get the users from the system


               //Binding happens

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

将其转换为可以使用Windows事件简单地创建FormClosing事件的内容。

1 个答案:

答案 0 :(得分:0)

问题解决了。我们的数据库与此对话框所属的控件正在加载时发生数据泄漏。我感谢所有的帮助。数据库在加载对话框之前拍摄信息,然后再将其发送。只有一组数据得到妥善处理。我们解决了这个问题。谢谢。 -