Как передать данные из JavaScript в пользовательский элемент управления WinForms

Вопрос о передаче данных

У меня есть пользовательский элемент управления 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 установить в коде контрола.