Czy istnieje sposób hostowania/wyświetlania pełnego formularza WinForm (a nie tylko pojedynczego elementu sterującego) w ramach jakiegoś rodzaju kontrolki kontenera lub opakowania w formularzu WPF? Szukam czegoś podobnego w koncepcji do wirtualnego włączania z php lub iframe w html. Prawdopodobnie poprzez skompilowanie go do OCX lub DLL.Czy można umieścić formularz WinForm w formularzu WPF za pomocą kontenera/opakowania?
Odpowiedz
Według mojej wiedzy nie można hostować faktycznego formularza WinForm w WPF.
Jednak dobrą alternatywą jest utworzenie normalnego UserControl w WinForm (jako projekt Windows Forms Control Library), który zawiera wszystkie wymagane funkcje i kontrole podrzędne.
Następnie w projekcie WPF odwołaj się do WindowsFormsIntegration.dll (powinien znajdować się w zakładce .NET w Add References).
Następnie należy także odwołać się do zestawu zawierającego narzędzie WinForms UserControl i na końcu dodać kontener WindowsFormsHost do XAML. Aby uzyskać więcej informacji, patrz useful tutorial autorstwa Sacha Barber.
Istnieje artykuł na temat CodeProject, który pokazuje, jak ustawić plik EXE jako kontrolkę na WinFormach (Jest to aplikacja, która używa stron Tab, przeciągnij na nią Winform.exe, tworzy stronę z tym oknem) , pochodzi z tego artykułu here. Wiem, że prosiłeś o konkretnie WPF, ale może to doprowadzi cię we właściwym kierunku?
Mam nadzieję, że to pomoże, Pozdrawiam, Tom.
można to zrobić za pomocą następującego kodu:
W swojej XAML:
<WindowsFormsHost name="wfHost" />
w kodzie opóźnieniem:
Form foo = new Form();
foo.TopLevel = false;
foo.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
wfHost.Child = foo;
+1, mało znana "TopLevel". Używany do tego w * .NET Compact 1.1 * w celu powielenia funkcjonalności "podformularza", np. * Microsoft Access *. – AMissico
Nie skończyć się z tego, ale to niesamowite narzędzie. Dzięki za link. – jasonk