c# - 如何将 .NET 4 WinForm 应用程序分配给 Delphi 7 窗体的所有者属性?

标签 c# .net delphi interop

我需要将 .NET 4 Winform 应用程序指定为 Delphi 7 表单的所有者。

我在 Delphi 中创建了一个包含表单的 .dll。 Delphi .dll 导出方法来创建和显示表单。

我已经在我的 .NET 应用程序中成功加载了 Delphi .dll,并显示了表单。

现在我需要能够将 .NET 应用程序(或 .NET 应用程序的主窗体)指定为 Delphi 窗体的所有者。

我之前创建了一个通过 COM 与 .NET 互操作的 Delphi 应用程序,并使用以下类将 Delphi 应用程序指定为 .NET 表单的所有者:

public class WindowHandleWrapper : IWin32Window
{
    public HandleRef m_Handle;

    public IntPtr Handle
    {
        get
        {
            return m_Handle.Handle;
        }
    }

    public WindowHandleWrapper(IntPtr handle)
    {
        m_Handle = new HandleRef(this, handle);
    }
}

Delphi 应用程序句柄作为整数传递给 WindowHandleWrapper 构造函数。

我怀疑解决方案会是类似的,例如将句柄作为整数传递给 Delphi。但是,窗体的 Owner 属性的 Delphi 类型是 TComponent。我只是不确定如何将 .NET 句柄分配为 Delphi 窗体的所有者。

有什么想法吗?

最佳答案

将您的 WinForm 句柄作为参数传递给 DLL,并在以模式方式创建和显示表单之前将其分配给 Application.Handle

关于c# - 如何将 .NET 4 WinForm 应用程序分配给 Delphi 7 窗体的所有者属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5249468/

相关文章:

c# - C# 中的动态转换

C# 如何暂停我的程序并等待来自 WinForm 的键盘输入

c# - 如何在 C# 中就地截断数组

.net - 在 .NET 中将字符串转换为 System.Color

c# - 如何在 Nunit 中使用文件断言并检查文件是否存在

windows - 是否有编程方式在 Windows 中获取短日期名称?

delphi - 用于调试远程计算机问题的技术和工具?

c# - 如何获取服务器域名

c# - 插入语句后从 SQL 数据库中检索自动增量 ID

delphi - 如何访问DataSnap Server中的请求 header ?