Как встроить элемент управления Java в элемент управления C # winforms?
Вопрос
Могу ли я поместить элемент управления Java (SWT, Swing, ...) в элемент управления C #?
Я знаю, что это возможно с помощью веб-элементов управления, но мне не нравится этот способ.
Решение
Я перепроверил это, похоже, что IKVM в настоящее время не имеет достаточной поддержки в своей КОРМОВОЙ сборке.Я думаю, что единственный способ сделать то, что вам нужно, - это запустить java-элемент управления внутри отдельного процесса со скрытым главным окном и каким-то образом передать дескриптор этого элемента управления вашему приложению на C #.
Оригинальный ответ:
Я не уверен, что вы можете просто "добавить" это, но вы можете попробовать это направление:
Было бы необходимо преобразовать классы Java в .Сетевые сборки через IKVM.
Прежде всего, вам нужно получить доступ к элементу управления java.Вы можете посмотреть на этот пост если вам нужна информация о том, как это сделать.Я потерпел неудачу на этом шаге, потому что я не нашел Win32DrawingSurface и DrawingSurfaces в библиотеках IKVM, возможно, достаточно просто создать какой-нибудь статический метод GetHandle () на стороне java.
Получите доступ к вашему родительскому элементу управления C #.Это просто, так как элемент управления имеет свое свойство Handle.
После получения обоих дескрипторов вы можете установить один из них в качестве родительского для другого.Для этого вам нужно вызвать функцию 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 для этого.
Ознакомьтесь с 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 году. Ожидайте, что его использование принесет вам значительную боль в долгосрочной перспективе, но если вам действительно нужна какая-то его часть, это может помочь.