c# - .Net WebBrowser 中的 HTML 与 WinForms 应用程序之间的双向通信

标签 c# javascript interop browser com-interop

当使用 WebBrowser 控件时,我想将对象从 javascript 代码传递到 C#。

已知解决方案 - 使用 WebBrowserObjectForScripting 属性并使用 window.external 从 javascript 代码调用方法。

我知道该怎么做,但我想在 javascript 中创建具有给定类型的对象并将其传递给 C#,而不使用 objectdynamic。示例:

我想在 C# 中从 JS 调用这个方法:

public void Test(Foo foo)
{
    //do something
}

Foo 是:

[ComVisible(true)]
public class Foo
{
    public string Bar;
}

我知道如何调用这些方法:

public void Test2(object foo)
{
    //do something
}

public void Test3(dynamic foo)
{
    //do something
}

但我想使用第一个 - Test(Foo foo)

我应该怎么做才能将类 Foo 的对象从 JS 传递到 C# 或如何将 JS 对象动态转换为 C# Foo 对象?

最佳答案

jscript 中的类型系统较弱,所以不能有早期绑定(bind)类。我建议你make your class automatable and register your project's type library for late binding因此可以通过新的 ActiveXObject 在 jscript 中调用它。

关于c# - .Net WebBrowser 中的 HTML 与 WinForms 应用程序之间的双向通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3236513/

相关文章:

objective-c - Swift 2 - @objc 抛出错误的协议(protocol)

c# - 错误 - 未标记为可序列化

javascript - 按钮 :hover not working in IE 11 compatibility mode

javascript - 计算数字组的可能组合

c# - 如何在 .NET C# WinService 中使用 COM 服务器(ATL、DLL 代理)?

python - 互操作性建议 - Python、C、Matplotlib/OpenGL 运行时效率

C# 循环 - 中断与继续

c# - 使用 Moq 查看是否使用值调用了方法

c# - 如何在 C# 窗体中突出显示 RichTextbox 中的完整行

javascript - 考虑到 rowspan 和 colspan,如何从一维数组创建动态 html 表?