Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Windows Forms-toepassingen en -besturingselementen kunnen samenwerken met onbeheerde toepassingen, met enkele opmerkingen. In de volgende secties worden de scenario's en configuraties beschreven die windows Forms-toepassingen en besturingselementen ondersteunen en die niet worden ondersteund.
Besturingselementen voor Windows-formulieren en ActiveX-toepassingen
Met uitzondering van Microsoft Internet Explorer en Microsoft Foundation Classes (MFC) worden Windows Forms-besturingselementen niet ondersteund in toepassingen die zijn ontworpen voor het hosten van ActiveX-besturingselementen. Andere toepassingen en ontwikkelhulpprogramma's die activeX-besturingselementen kunnen hosten, waaronder de ActiveX-testcontainers van versies van Visual Studio die ouder zijn dan Visual Studio .NET 2003, worden niet ondersteund voor hosts voor Windows Forms-besturingselementen.
Deze beperkingen zijn ook van toepassing op het gebruik van Windows Forms-besturingselementen via Component Object Model (COM) interop. Het gebruik van een Windows Forms-besturingselement via een COM-aanroepbare wrapper (CCW) wordt alleen ondersteund in Internet Explorer. Zie voor meer informatie over COM-interop
In de volgende tabel ziet u de beschikbare ActiveX-hostingondersteuning voor Besturingselementen voor Windows Forms.
| Windows Forms-versie | Ondersteuning |
|---|---|
| .NET Framework versie 1.0 | Internet Explorer 5.01 en nieuwere versies |
| .NET Framework versie 1.1 en hoger | Internet Explorer 5.01 en nieuwere versies Microsoft Foundation Classes (MFC) 7.0 en hoger |
Onderdelen van Windows Forms hosten als ActiveX-besturingselementen
In .NET Framework 1.1 is de ondersteuning uitgebreid met MFC 7.0 en latere versies. Deze ondersteuning omvat alle containers die volledig compatibel zijn met de ActiveX-besturingscontainer MFC 7.0 en hoger.
Echter, registratie van Windows Forms-besturingselementen als ActiveX-besturingselementen wordt niet ondersteund. Het aanroepen van de com.ms.win32.Ole32.CoCreateInstance methode voor Besturingselementen voor Windows Forms wordt ook niet ondersteund. Alleen beheerde activering van Besturingselementen voor Windows Forms wordt ondersteund. Zodra u een Besturingselement voor Windows Forms hebt gemaakt, kunt u dit hosten in een MFC-toepassing, net als bij een ActiveX-besturingselement.
Als u Windows Forms-besturingselementen in uw onbeheerde toepassing wilt gebruiken, moet u de CLR hosten met behulp van de niet-beheerde CLR-hosting-API's of de C++-interopfuncties gebruiken. Het gebruik van de C++-interopfuncties is de aanbevolen oplossing.
Windows Forms in COM-clienttoepassingen
Wanneer u een Windows-formulier opent vanuit een COM-clienttoepassing, zoals een Visual Basic 6.0-toepassing of een MFC-toepassing, kan het formulier onverwacht werken. Wanneer u bijvoorbeeld op de Tab-toets drukt, verandert de focus niet van het ene besturingselement naar het andere besturingselement. Wanneer u op Enter drukt terwijl een opdrachtknop de focus heeft, wordt de Click-gebeurtenis van de knop niet gegenereerd. U kunt ook onverwacht gedrag ervaren voor toetsaanslagen of muisactiviteit.
Dit gedrag treedt op omdat de niet-beheerde toepassing de ondersteuning van de berichtenlus niet implementeert die Windows Forms nodig heeft om correct te werken. De berichtlus van de COM-clienttoepassing verschilt fundamenteel van de Windows Forms-berichtenlus.
De berichtenlus van een toepassing is een interne programmalus waarmee berichten uit de berichtenwachtrij van een thread worden opgehaald, vertaald en vervolgens naar de toepassing worden verzonden die moeten worden verwerkt. De berichtenlus voor een Windows-formulier heeft niet dezelfde architectuur als berichtlussen die eerdere toepassingen, zoals Visual Basic 6.0-toepassingen en MFC-toepassingen, bieden. De vensterberichten die in de berichtenlus worden geplaatst, kunnen anders worden verwerkt dan verwacht in het Windows-formulier. Daarom kan onverwacht gedrag optreden. Sommige toetsenaanslagen werken mogelijk niet, sommige muisactiviteit werkt mogelijk niet of sommige gebeurtenissen worden mogelijk niet gegenereerd zoals verwacht.
Interoperabiliteitsproblemen oplossen
U kunt deze problemen oplossen door het formulier weer te geven in een .NET Framework-berichtlus, die wordt gemaakt met behulp van de Application.Run methode.
Als u een Windows-formulier correct wilt laten werken vanuit een COM-clienttoepassing, moet u dit uitvoeren in een Windows Forms-berichtlus. Gebruik hiervoor een van de volgende methoden:
Gebruik de methode Form.ShowDialog om het Windows-formulier weer te geven. Zie Procedure: COM-interoperabiliteit ondersteunen door een Windows-formulier weer te geven met de Methode ShowDialogvoor meer informatie.
Geef elk Windows-formulier weer op een nieuwe thread. Zie Procedure: COM-interoperabiliteit ondersteunen door elk Windows-formulier weer te geven op een eigen threadvoor meer informatie.
Zie ook
- Windows Forms en niet-beheerde toepassingen
- COM-interoperabiliteit
- COM-interoperabiliteit in .NET Framework-toepassingen
- COM-interoperabiliteitsvoorbeelden
- Aximp.exe (Windows Forms ActiveX Control Importer)
- .NET Framework-onderdelen beschikbaar maken voor COM-
- een assembly verpakken voor COM-
- Assemblies registreren bij COM
- Hoe te: Ondersteun COM-interoperabiliteit door een Windows-formulier weer te geven met de ShowDialog-methode
- Procedure: COM-interoperabiliteit ondersteunen door elk Windows-formulier weer te geven op een eigen thread
.NET Desktop feedback