gpt4 book ai didi

c# - 使用 CancelEventArgs 的 Closing() 与使用 FormClosingEventArgs 的 Form_Closing

转载 作者:太空宇宙 更新时间:2023-11-03 13:18:43 26 4
gpt4 key购买 nike

我们目前正在升级和重新模块化我们的代码,因为我们从 32 位系统转移到 64 位系统。在适当的程序中,我们的目标之一是改变 Init() 函数,其中添加了一些东西作为这样的例子。

this.Closing += new System.ComponentModel.CancelEventHandler(this.Form_Closing);

我希望 Windows 事件能够处理这类事情。所以我去了 Windows Form Events 中的 Form_Closing 事件,[毫不意外] 发现这不是 form_closing 事件。我对此的问题是,CancelEventArgs 与 FormClosingArgs 实际发生的事情之间是否有任何区别,或者这两段代码实际上是在做同样的事情,一个是系统的组件,一个是 Windows 事件处理的结果它最擅长什么?作为一名实习生,我只是有点潜入并沉迷于这个新项目。是否可以只用 FormClosing 替换 CancelEventArgs 而不会丢失任何数据或出现问题?

代码 1:CancelArgs

 private void Form_Closing(object sender, CancelEventArgs e)
{
// If the user hit Cancel, just close the form.
if (this.DialogResult == DialogResult.Ignore)
return;

if (this.DialogResult == DialogResult.OK)
{
// If the address is not dirty, just cancel out of
// the form.
if (!this._editedObject.IsDirty)
{
this.DialogResult = DialogResult.Cancel;
return;
}

// Save changes. If save fails, don't close the form.
try
{
SaveChanges();
return;
}
catch (Exception ex)
{
ShowException se = new ShowException();
se.ShowDialog(ex, _errorObject);
_errorObject = null;
e.Cancel = true;
return;
}
}

Form_Closing -- 首选路线

private void ScheduleItemDetail_FormClosing(object sender, FormClosingEventArgs e)
{
// If the user hit Cancel, just close the form.
if (this.DialogResult == DialogResult.Ignore)
return;

if (this.DialogResult == DialogResult.OK)
{
// If the address is not dirty, just cancel out of
// the form.
if (!this._editedObject.IsDirty)
{
this.DialogResult = DialogResult.Cancel;
return;
}

// Save changes. If save fails, don't close the form.
try
{
SaveChanges();
return;
}
catch (Exception ex)
{
ShowException se = new ShowException();
se.ShowDialog(ex, _errorObject);
_errorObject = null;
e.Cancel = true;
return;
}
}
}

最佳答案

你没有得到 CloseReason属性与 CancelEventArgs 类,这是唯一的区别,因为 FormClosingEventArgs 继承自 CancelEventArgs 类。 .Net 2.0 中引入了 FormClosingEventArgs。

或者,您也可以重写 OnFormClosing 方法,而不是使用该事件。

protected override void OnFormClosing(FormClosingEventArgs e) {
// your code
base.OnFormClosing(e);
}

关于c# - 使用 CancelEventArgs 的 Closing() 与使用 FormClosingEventArgs 的 Form_Closing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25119082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com