Méthode gérée pour setParent () sur le formulaire
-
13-11-2019 - |
Question
Comment puis-je montrer un formulaire comme un enfant d'une fenêtre qui n'est pas dans mon programme?
J'ai une poignée de fenêtre sur ce qui devrait être le parent, mais je ne vois aucune méthode gérée pour setparent () sur un formulaire. Est-ce qu'il y a un? Il semble également que le form.Show()
La méthode accepte uniquement les objets gérés implémentant iwin32window.
S'il n'y a pas de méthode gérée, quelle est la méthode préférée pour déclarer l'API pour une compatibilité maximale avec les futurs systèmes? Comme ça?:
<DllImport("user32.dll")> _
Private Shared Function SetParent(hWndChild As IntPtr, hWndNewParent As IntPtr) As IntPtr
End Function
Est-il possible de construire une classe qui implémente iwin32window et enveloppe en quelque sorte une fenêtre? Il serait pratique de faire quelque chose comme ça, mais je ne connais pas Iwin32Window:
frmMyForm.Show(New NativeWindowWrapper(12345)) 'Where 12345 is the hWnd of the window I want to wrap
La solution
Oh wow, je viens de trouver la documentation sur iwin32window, et je vois que ce n'est qu'une propriété ... Handle
. Oui, bien sûr, je peux facilement faire de cette classe nativewindowwrapper ...
Je ne l'ai pas encore testé, mais je suis sûr que cela fonctionnera très bien ...
Public Class NativeWindowWrapper
Implements IWin32Window
Private _Handle As IntPtr
Public ReadOnly Property Handle As System.IntPtr Implements System.Windows.Forms.IWin32Window.Handle
Get
Return _Handle
End Get
End Property
Public Sub New(ByVal Handle As IntPtr)
Me._Handle = Handle
End Sub
End Class