2009-03-16 3 views
1

В настоящее время мы работаем над переносом старого приложения VB6 в WPF. План на первом этапе заключается в переносе нескольких ключевых форм, а не во всех приложениях. Было показано, что мы можем попробовать и открыть часть старой формы VB6 из приложения WPF (в виде модальных форм), тем самым обеспечивая большую функциональность, предназначенную для первого этапа.Открытие формы VB6 из приложения WPF

Мой вопрос для вас, во-первых, это такая мерзость :) даже возможно? Можно ли открывать формы VB6 из приложения WPF?

Thanks, Shahaf.

ответ

0

Что вам нужно сделать, это упаковать формы в DLL ActiveX и выставить классы, которые могут устанавливать начальные значения, вызывать формы и возвращать любые значения, которые они изменяют.

Например, в моих собственных приложениях CAD/CAM у нас есть Формы, а затем слой, который не содержит ничего из Command Objects (классы, реализующие шаблон проектирования команд), которые изменяют модель, и модель, все написанные на VB6.

Некоторые из диалоговых окон «Команды», которые являются формами VB6. Некоторые из них просты, а другие сложны. Первая фаза нашего проекта конверсии заключалась в том, чтобы вырвать верхний слой формы и заменить его эквивалентом .NET. Новые формы .NET ссылаются на активные библиотеки DLL, содержащие объект Command.

Он работал нормально. Были некоторые визуальные различия между представлением .NET и видом формы VB6, но кроме командных диалогов выполнялись так же, как и в исполняемом файле VB6.

Следует обратить внимание на то, что если вы продолжаете изменять исходные DLL-файлы ActiveX во время этого процесса, то создание программы .NET становится немного больно. В отличие от VB6, .NET не так автоматичен, когда речь заходит о обновленных ссылках на более новые версии библиотеки ActiveX, на которую ссылается. Решение прост, вы отбрасываете исходную ссылку и затем добавляете новую ссылку.

+0

Являются ли ваши .NET формы WPF или WinForms? – MarkJ

+0

Я сделал это с обоими. –

0

Да, это возможно; в зависимости от того, насколько вы готовы работать. Основные сценарии, которые поддерживаются следующие (примечание: есть и другие поддерживаемые сценарии, но они являются ключевые них):

  1. WPF -> WinForms
  2. WinForms -> WPF

Учитывая, что с VB6 ваши объекты являются COM-объектами, вы можете разместить их в WPF через WinForms. Это место на MSDN, где я рекомендую вам начать:

Есть также несколько очень хороших книг на WPF, которые охватывают Interop с WPF (в обоих направлениях), для того, предпочтения по этой теме:

  • WPF развязали (Adam Nathan)
  • Программирование WPF (Chris Sells и Ian Griffiths)

Надеюсь, это поможет.

Смежные вопросы