Как встроить элемент управления Java в элемент управления C # winforms?

StackOverflow https://stackoverflow.com/questions/441275

Вопрос

Могу ли я поместить элемент управления Java (SWT, Swing, ...) в элемент управления C #?

Я знаю, что это возможно с помощью веб-элементов управления, но мне не нравится этот способ.

Это было полезно?

Решение

Я перепроверил это, похоже, что IKVM в настоящее время не имеет достаточной поддержки в своей КОРМОВОЙ сборке.Я думаю, что единственный способ сделать то, что вам нужно, - это запустить java-элемент управления внутри отдельного процесса со скрытым главным окном и каким-то образом передать дескриптор этого элемента управления вашему приложению на C #.


Оригинальный ответ:

Я не уверен, что вы можете просто "добавить" это, но вы можете попробовать это направление:

Было бы необходимо преобразовать классы Java в .Сетевые сборки через IKVM.

  1. Прежде всего, вам нужно получить доступ к элементу управления java.Вы можете посмотреть на этот пост если вам нужна информация о том, как это сделать.Я потерпел неудачу на этом шаге, потому что я не нашел Win32DrawingSurface и DrawingSurfaces в библиотеках IKVM, возможно, достаточно просто создать какой-нибудь статический метод GetHandle () на стороне java.

  2. Получите доступ к вашему родительскому элементу управления C #.Это просто, так как элемент управления имеет свое свойство Handle.

  3. После получения обоих дескрипторов вы можете установить один из них в качестве родительского для другого.Для этого вам нужно вызвать функцию SetParent из WINAPI.

    [DllImport("user32.dll")] частный статический внешний интерфейс IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

Другие советы

Я написал примеры:
- Встраивание компонентов Java в .NET GUI,
- .NET WinForm Встраивание компонентов в Java GUI.
Вы можете найти их в продуктах:

http://www.simtel.net/product .php [ID] 95126 [SiteID] simtel.net
http://www.simtel.net/product .php [id] 98653 [SiteID] simtel.net

Вы можете использовать JNBridge для этого.

http://www.jnbridge.com/jnbp-examples.htm#JinN

Ознакомьтесь с IKVM проектом. Это виртуальная машина Java, реализованная в .net, которая обеспечивает совместимость java и .net.

Точно не знаю, насколько он завершен, и если он обеспечивает требуемую функциональность, стоит посмотреть.

Если элемент управления не является настраиваемым элементом управления и находится в разгаре, вы можете найти его в Microsoft Visual J # (версия 2.0 или дополнительное дополнение для 1.1 http://msdn.microsoft.com/en-us/vjsharp/bb188695. ASPX )

Обратите внимание, что элемент управления J # Swing не будет проигрывать мяч, сброшенный в приложении WinForms напрямую, вам может потребоваться предоставить хост-элемент управления, который делегирует всю рисование для копирования изображения из скрытого элемента управления J #, помещенного в простую форму j # (также скрытую). где область просмотра формы изменяется в соответствии с областью просмотра хост-элемента управления. Это, по крайней мере, устраняет необходимость в отдельном процессе. Такое использование имеет несколько ограничений, я подозреваю, что элемент управления, который вы хотите использовать, является сложным (или вы просто переопределил это).

Обратите внимание, что J # официально умирает (не более серьезное обслуживание) и официально не будет поддерживать его вообще в 2015 году. Ожидайте, что его использование принесет вам значительную боль в долгосрочной перспективе, но если вам действительно нужна какая-то его часть, это может помочь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top