我使用的是 InteropFormsToolkit 2.1 版。我试图确保当 .NET 表单从 VB6 表单上引发的事件加载时,.NET 表单可以保持在顶部。我已经尝试了很多事情但无法让任何事情发挥作用。我已经尝试了一切,从 z-index 到向 User32.dll 添加托管调用以将其推到最前面,等等。
任何想法都值得赞赏。
在 vb6 中你可以使用:
Private Sub Form_Load()
OnTopMe Me, True
End Sub
以及模块中的以下代码
Declare Function SetWindowPos Lib "User32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cX As Long, ByVal cY As Long, ByVal wFlags As Long) As Long
Public Sub OnTopMe(FormID As Object, onTop As Boolean)
If onTop = True Then SetWindowPos FormID.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
If onTop = False Then SetWindowPos FormID.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub
我不知道如何在.Net中做到这一点
尝试这个旧例程并收到 HWND_TOPMOST 未定义的错误。您的示例中是否缺少变量定义?