Hej! Gjorde så här, kanske inte så snyggt men det funkar Det bör fungerar att bara kolla på visible-propertyn efter Close()...exempel :form closed?
Det här problemet finns det säkert en mycket enkel och snygg lösning på.
Hur kollar jag om en instans av en form är "closed" eller inte ?
jag har en huvud form (mdi) som äger en massa formar och när man gör close på den så:
<code>
Private Sub MainForm_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
dim f as form
for each f in me.mdichildren
f.close
if 'test för att avgöra om f verkligen blev closed eller om det blev "canceled"
e.cancel = true
end if
next
end sub
</code>
orkar inte koda ihop nån avslutnings-funktionSv: form closed?
<code>
Private Sub MainForm_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
Dim f As Form
For Each f In Me.MdiChildren
Me.myChildClosed = False
AddHandler f.Closed, AddressOf Me.ChildForm_Closed
f.Close()
RemoveHandler f.Closed, AddressOf Me.ChildForm_Closed
If Not Me.myChildClosed Then
e.Cancel = True
Exit For
End If
Next
End Sub
Private myChildClosed As Boolean
Private Sub ChildForm_Closed(ByVal sender As Object, ByVal e As System.EventArgs)
Me.myChildClosed = True
End Sub
</code>Sv: form closed?
<code>
f.Close()
If f.Visible = True Then
MsgBox("Cancelled!")
End If
</code>
Skulle inte detta räcka så skulle jag låta alla formulär implementera ett interface med en IsCancelled-property, som du isåfall till sätter True i Closing-eventet (eller var du nu gör en Cancel). Om alla dina formulär implementerar detta interface så är det lätt att kolla om ett formulär är öppet eller inte...
/Per Hultqvist