将委托传递给WPF WebBrowser.InvokeScript方法

时间:2012-03-22 22:53:06

标签: c# javascript wpf asynchronous delegates

public void ProcessResult(string result)
{
   this.MyTextBox.Text = result;
}

...

this.WebBrowser.InvokeScript("jsFunctionName", ProcessResult);

我需要实现这样的目标。 JavaScript函数“jsFunctionName”是异步的,需要一个捕获结果的回调。

但是,InvokeScript方法的第二个参数接受一个Objects数组。那么,如何将这个C#方法/委托传递给InvokeScript方法?

修改

即使我们可以将委托传递给WebBrowser控件,控件中的脚本将如何调用C#委托?

1 个答案:

答案 0 :(得分:1)

我建议您查看本文,了解有关使用InvokeScript实现双向通信的详细信息:http://msdn.microsoft.com/en-us/library/a0746166.aspx

此外,传递的对象不是回调而是参数。如果你想传递方法,我会把方法名称作为字符串传递给函数。

这是一个简单的代码,显示了如何从js端组织呼叫(通过按钮点击,虽然它可能被理解为用作简单的呼叫):

<button onclick=\"window.external.Test('called from script code')\>...</button>

如果从js调用任何方法时出现问题,你总是可以自由地实现接受字符串函数名称并调用必要函数的泛型函数:

public void CallMethod(string methodName, params object[] parameters)
{
    ...
}