对话框延迟关闭的问题
对话框Dialog1,上有一个确定按钮:Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
End Sub
命令函数调用对话框,点击确定后执行一个比较耗时的操作:
<CommandMethod("TTT")> Public Sub TTT()
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim ed As Editor = doc.Editor
Dim Dlg As New Dialog1
Application.ShowModalDialog(Dlg)
If Dlg.DialogResult = Windows.Forms.DialogResult.OK Then
For i = 0 To 30000
ed.WriteMessage(vbLf & "i={0}", i)
Next
End If
End Sub问题:点击确定按钮后,对话框直到命令函数执行完成才消失。VBA中用DoEvents方法可以实现,VB.NET中DoEvents方法不起作用。如果Click事件加上Me.Hide,则命令执行时很多AutoCAD界面元素时不显示,也不行。
怎么才能让对话框即时关闭不延迟?
<CommandMethod("vt2")> _
Public Sub Test2()
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim ed As Editor = doc.Editor
Dim res As Windows.Forms.DialogResult
Using Dlg As New Form1()
res = Application.ShowModalDialog(Dlg)
End Using
If res <> Windows.Forms.DialogResult.OK Then Return
ed.UpdateTiledViewportsFromDatabase()
For i = 0 To 30000
ed.WriteMessage(vbLf & "i={0}", i)
Next
End Sub 测试了一下,UpdateTiledViewportsFromDatabase虽然能立即关闭对话框,却导致一次重新生成,不可行。另外,Using语句好像专门用于对非托管资源的调用,用在Form类型上应该不起作用吧。
前面同样的代码,在WIN XP中有延迟,在WIN7中就没有,看来和平台有关。.NET API里应该有解决办法,只是一时找不到。 Using用于IDispose接口
估计只有在.Net里找?或者调用Api?未知
NetAPi应该没有解决方案? 今天,也遇到这个问题。转了几道弯才算凑付过去。
Student 发表于 2012-4-30 19:01
今天,也遇到这个问题。转了几道弯才算凑付过去。
这个问题如何解决的呢,请教一下!
页:
[1]