2013-11-11 7 views
0

Использование Awesomium .net для оконных форм.Как выбрать элементы в массиве?

Мой код-код для вызова функций java-скрипта, передающих аргументы (JSValue).

JSValue[] args = new JSValue[args2.Length]; 

for (int i = 0; i < args2.Length; i++) 
{ 
args[i] = args2[i].ToString(); 
} 

JSObject js_obj = webControl1.ExecuteJavascriptWithResult("window"); 
//args has all my 35 elements. 
js_obj.Invoke("addTheseElements", args); 

ССЫЛКА http://docs.awesomium.net/html/M_Awesomium_Core_JSObject_Invoke.htm http://answers.awesomium.com/questions/784/calling-a-javascript-method-with-parameters.html

Мой HTML страница

<script> 

function addTheseElements(args) { 

alert(args); 
//returns element1 

alert(args[0]); 
//returns e 

alert (args.length) 
//returns 8 (element1) 

} 

</script> 

Проблема заключается в том, что я не в состоянии выбрать 2-й элемент в массиве. Как мне получить доступ к нему? Что я делаю не так?

Structure of JSValue. Available properties and methods

+0

вы пробовали 'предупреждения (args2.Length)' 'Перед JSValue [] арг = новый JSValue [args2.Length],' просто чтобы увидеть, если у вас есть правильное количество элементов, которые вы хотите? – Edper

+0

Да, я это сделал. Я передаю все 35 элементов вызова функции. – Searching

ответ

0

OK Я не уверен, если это правильный способ сделать это, но получается, что второй параметр мне нужно передать это объект JSValue и не JSValue [].

Так что мой рабочий ответ был

 JSValue[] args = new JSValue[args2.Length]; 

     for (int i = 0; i < args2.Length; i++) 
     { 
      args[i] = args2[i].ToString(); 

     } 

     JSValue args3 = args; 

     JSObject js_obj = webControl1.ExecuteJavascriptWithResult("window"); 

     js_obj.Invoke("addTheseElements", args3); 

Но синтаксис в документации был

public JSValue Invoke(
    string methodName, 
    params JSValue[] args 
) 

REF http://docs.awesomium.net/html/M_Awesomium_Core_JSObject_Invoke.htm

Пожалуйста, не стесняйтесь, чтобы объяснить, если кто-нибудь узнает, что здесь произошло.

Cheers.

+0

Может ли быть неявное преобразование здесь 'args [i] = args2 [i] .ToString();' что i't становится 'String' вместо объекта' JSValue'? Попробуйте вместо этого 'args [1] .push (args2 [i] .ToString();'. – Edper

+0

Извините, но расширение push недоступно для версии .NET. Для того, что вы указали, я также попытался создать новый JSValue вроде этого args [i] = новый JSValue (args2 [i] .ToString()), но не повезло, только один из них работал. – Searching

+0

вы пробовали push_back вместо push как 'args [i] .push_back (args2 [i] .ToString()); ' – Edper

0

Попробуйте изменить один:

args[i] = args2[i].ToString(); 

To:

args[i].push_back(args2[i].ToString()); 

перед передачей.

Так что это стало бы:

JSValue[] args = new JSValue[args2.Length]; 

for (int i = 0; i < args2.Length; i++) 
{ 
args[i].push_back(args2[i].ToString()); 
} 

JSObject js_obj = webControl1.ExecuteJavascriptWithResult("window"); 

js_obj.Invoke("addTheseElements", args); 
Смежные вопросы