阻止表单在其父级关闭时关闭

时间:2014-03-26 03:42:39

标签: winforms

我正在尝试开发一个应用程序的小问题。 我有使用我在网上发现的一些代码弹出的通知(ToastForms)。它会弹出屏幕右下方的一个小通知窗口,然后消失。是一种享受。

但是,我的问题是当我点击通知窗口时,我想从Form1以模态方式打开另一个窗口。例如,我有我的主窗体(Form1),然后通知显示第二个窗体(Form2),当我单击Form2时,它打开第三个窗体(Form3)。

这样可以正常工作,直到Form2自动关闭。然后它会自动关闭Form3。 有没有办法我可以使用Form1作为父项从Form2打开一个表单?因此,关闭Form2对Form3没有影响吗?

我无法隐藏Form2,因为如果有更多通知,它会将这些通知叠加在隐藏表单之上。如果Form3长时间处于打开状态,则可能意味着很多隐藏的通知表单。

更新

好的,所以打开新通知的代码如下所示:

If Notifications.Exists(Function(p) p.Id = tempDT.Rows(x)("id").ToString) = False Then
                    Notifications.Add(New Notification() With {.Id = tempDT.Rows(x)("id").ToString, .Description = "Call ID #" & tempDT.Rows(x)("id").ToString & " has now become overdue", .Read = False, .Type = "Overdue"})
                    Dim slice As New ToastForm(10000, "Call ID #" & tempDT.Rows(x)("id").ToString & " has now become overdue")
                    slice.Height = 100
                    slice.Show()
                End If

然后,在ToastForm下我在标签控件上有一个click事件,所以当用户点击窗口(带有一个fullsize停靠标签控件)时,它会打开我对主窗体(frmNewDashboard)的通知表单:

Private Sub messageLabel_Click(sender As Object, e As EventArgs) Handles messageLabel.Click
    Dim frm As New frmShowNotifications
            Me.Cursor = Cursors.WaitCursor
            frm.Location = New Point(frmNewDashboard.Location.X + 1570, frmNewDashboard.Location.Y + 90)
            frm.ShowDialog()
            Me.Cursor = Cursors.Default
End Sub

最后,ToastForm有一个计时器事件。当计时器达到其长度时,它调用close事件,该事件关闭ToastForm和frmNotifications表单:

Private Sub lifeTimer_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles lifeTimer.Tick
    'The form's lifetime has expired.
    Me.Close()
End Sub

0 个答案:

没有答案