我正在尝试开发一个应用程序的小问题。 我有使用我在网上发现的一些代码弹出的通知(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