У меня есть пользовательский элемент управления Windows Forms, который работает в Internet Explorer. Мне нужно выяснить, как отправить данные с веб-страницы в этот элемент управления.
Что я хочу сделать:
Получить данные из веб-формы
Отправить эти данные в WinForms контрол
Обработать их в элементе управления
Вот что у меня сейчас есть:
function sendDataToControl() {
var inputText = document.getElementById('inputField').value;
var inputAge = document.getElementById('ageField').value;
// Как передать inputText и inputAge в элемент управления WinForms?
}
Как наилучшим образом организовать взаимодействие между JavaScript на странице и элементом управления Windows Forms? Существуют ли какие-либо встроенные функции или нужно использовать сторонние библиотеки?
Еще можно через postMessage попробовать если у тебя iframe используется. У меня похожая задача была пару лет назад - делал через events. В winforms контроле подписывался на события от веб-страницы, а в джаваскрипте генерировал кастомные события с данными. получалось довольно стабильно, хотя немного костыльно конечно. Главное чтобы типы данных правильно приводились, а то можеш словить исключение.
А что у тебя за контрол именно? ActiveX или как веб-компонент встроен? От этого много зависит в плане способов передачи данных. Обычно через COM-интерфейс делается если ActiveX, а для обычных контролов можно через window.external попробовать.
Если у тебя WinForms контрол работает в IE, то скорее всего это WebBrowser контрол с обратной связью. Попробуй сделать через window.external - в C# коде добавь [ComVisible(true)] атрибут к классу и метод для приема данных. Потом в JS просто вызывай window.external.MethodName(inputText, inputAge). Только не забудь ObjectForScripting установить в коде контрола.