通过webbrowser控件访问objectforscripting对象的集合属性

时间:2011-11-18 23:52:23

标签: .net winforms com browser

我正在把头发拉出来。我正在使用WebBrowser控件来托管我拥有的本地html页面(kiosk app)。我创建了一个com可见对象,用于webbrowser实例的objectforscripting属性。一切正常,我可以从页面javascript,属性和方法调用我的com对象。收集属性除外。这是我的代码。

[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    [System.Runtime.InteropServices.ComVisibleAttribute(true)]
    public class TestObjectModel
    {
        public string sProp = "testprop";

        public List<string> sList = new List<string>();

        public TestObjectModel()
        {
            sList.Add("test");  
        }
     }

我可以访问sProp没问题,下面有效..

<button onclick="alert(window.external.sProp)">test 1</button>

但是我无法访问list属性。

<button onclick="alert(window.external.sList[0])">test 2</button>

我已经尝试过转换为哈希表,字典,甚至创建我自己的类,它继承自IList并标记该类可见。不管我做什么,我总是得到错误

window.external.sList.0为null或不是对象

非常感谢帮助或指导我做错了什么。

谢谢!

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,并使用脚本字典工作。 Here's a website that explains how to work with the scripting dictionary

我基本上创建了另一个函数来将对象放入脚本字典中,并从那里调用它。

如果要调用它们,请记住使列表中的对象可见。

答案 1 :(得分:0)

添加对Microsoft Scripting Runtime的引用并使用Scripting.Dictionary作为列表​​属性?