0
我需要打開通知表單,而不會在出現時給出重點。 It works fine using P/Invoke除了事實顯示事件沒有啓動。 我的解決方案在這裏,但有更優雅(更通用)嗎?如何在使用P/Invoke打開的窗體中顯示顯示的事件?
Public Shared Sub ShowInactiveTopmost(frm As Form)
'standard P/Invoke code
ShowWindow(frm.Handle, SW_SHOWNOACTIVATE)
SetWindowPos(frm.Handle.ToInt32(), HWND_TOPMOST,
frm.Left, frm.Top, frm.Width, frm.Height, SWP_NOACTIVATE)
'invocation of 'Shown' event - can this be made independent of 'NotifForm' type?
CType(frm, NotifForm).NotifForm_Shown(Nothing, New EventArgs())
End Sub
我嘗試使用RaiseEvent Shown()
更通用的方法,但它被扔錯誤Derived classes cannot raise base class events.
你可以假裝一個圖片框是通知表單,並將其設置爲可見和前面。 –
@JeremyThompson - 是的,一個很好的解決方法。這次我想留下一個單獨的表格,因爲它有更大的可能性:它可以懸停在調用者的表單邊框上,它不會與現有表單中的Tab鍵混淆,它可以製作成可拖動的......另一方面,MouseMove和其他幾個事件根本不起作用。我看到我需要尋求超越「顯示」事件的建議。有趣的是,在WPF中,整個「沒有激活的表單」事件是從.NET 3.5開始實現的,但是在WinForms中,我們仍有待解決。 – miroxlav
您已經知道ShowWithoutActivation屬性。爲什麼你不使用它是非常不清楚的。 –