Vb.net 修改窗体关闭(X)的行为
我有一个承载datagrid的表单,用户可以从中选择要下载的项目。表单提示用户检查是否要关闭表单(当他们单击“X”时),如果要关闭表单,任何正在进行的下载都将中止。我使用以下方法处理此行为:Vb.net 修改窗体关闭(X)的行为,vb.net,winforms,Vb.net,Winforms,我有一个承载datagrid的表单,用户可以从中选择要下载的项目。表单提示用户检查是否要关闭表单(当他们单击“X”时),如果要关闭表单,任何正在进行的下载都将中止。我使用以下方法处理此行为: Private Sub OnFormClose(sender As Object, e As FormClosingEventArgs) Handles MyBase.Closing If not MessageBox.Show("Are you sure to close thi
Private Sub OnFormClose(sender As Object, e As FormClosingEventArgs) Handles MyBase.Closing
If not MessageBox.Show("Are you sure to close this application?", "Close", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
e.Cancel = True
Else
<Code to stop the downloads>
End If
End Sub
Private子OnFormClose(发送方作为对象,e作为FormClosingEventArgs)处理MyBase.Closing
如果不是MessageBox.Show(“您确定要关闭此应用程序吗?”,“关闭”,MessageBoxButtons.YesNo,MessageBoxIcon.Question)=Windows.Forms.DialogResult.Yes然后
e、 取消=真
其他的
<停止下载的代码>
如果结束
端接头
我试图在用户想要下载的文件完全下载后自动关闭此表单。当前的行为是让用户手动关闭表单。我正在尝试以下内容:
Private Function downloadSelectedFile(string Address)
Try
fileReader = New WebClient()
fileReader.DownloadFile(New Uri(Address), DestPath)
Me.Close()
Catch ex As Exception
<Exception Handling>
End Try
End Function
私有函数下载SelectedFile(字符串地址)
尝试
fileReader=新的WebClient()
下载文件(新Uri(地址),DestPath)
我
特例
结束尝试
端函数
现在,当代码点击
Me.Close()
行时,它会提示用户是否要关闭表单。这不起作用,因为用户没有真正选择关闭表单。是否有一种方法可以将参数传递给Me.Close()
函数,让它知道这是系统触发的表单关闭?所有这些都没有意义
- 您询问用户是否确定要退出,当用户说是时,您取消退出
- 您从不使用取消令牌来利用异步的下载取消,并且
- 开始下载后立即关闭表单
通常会有一个勾选框“所有下载完成后退出应用程序”-主窗体可以在创建/打开进度窗体时附加到该窗体的FormClosed事件。如果主窗体在每次子窗体关闭时查询Application.OpenForms集合,并发现treat OpenForms仅包含一个窗体(主窗体)和勾选“完成时关闭”后,它就可以知道如何使用应用程序关闭自己。退出,它自己的关闭原因将与用户单击关闭按钮时不同,这样它就可以知道不询问“是否确实要退出?”?“下载SelectedFile方法是否与用户选择下载文件的表单相同?为什么在下载一个文件后选择关闭表单?(目前不是这样;您使用DownloadAsync,但不等待它,因此表单将立即关闭;我不保证任务工作者在这种情况下会完成下载)只需添加一个布尔类型的私有字段,在调用我之前将其设置为True。close()现在知道在OnFormClose()中要做什么了@CaiusJard抱歉,我没有很好地编写代表代码:)下载完成时会触发一个事件,处理该方法的方法实际上会关闭表单。是的,该方法在表单中。我之所以要关闭表单,是因为一旦下载了文件,用户可以使用我的应用程序进一步处理它,而窗口就在那里there@HansPassant短a很简单,谢谢!!