有关所有者的信息通过 API 调用传递给创建的对话框(您可以在 ShowDialog(IWin32Window owner) 方法中的 Reflector 中看到):
UnsafeNativeMethods.SetWindowLong(new HandleRef(this, base.Handle), -8, new HandleRef(owner, handle));
如果在 ShowDialog 调用中没有指定所有者,owner
则通过 GetActiveWindow API 调用计算变量:
IntPtr activeWindow = UnsafeNativeMethods.GetActiveWindow();
IntPtr handle = (owner == null) ? activeWindow : Control.GetSafeHandle(owner);
要访问 Owner f 对话框表单,您可以使用GetWindowLong API 调用:
IntPtr ownerHandle = NativeMethods.GetWindowLong(nonModalForm.Handle, -8);