Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Aplikace a ovládací prvky Windows Forms můžou spolupracovat s nespravovanými aplikacemi s některými upozorněními. Následující části popisují scénáře a konfigurace, které aplikace a ovládací prvky Modelu Windows Forms podporují, a ty, které nepodporují.
Ovládací prvky Windows Forms a aplikace ActiveX
S výjimkou microsoft Internet Exploreru a tříd MICROSOFT Foundation (MFC) nejsou ovládací prvky Windows Forms podporovány v aplikacích navržených k hostování ovládacích prvků ActiveX. Ostatní aplikace a vývojové nástroje, které jsou schopné hostovat ovládací prvky ActiveX, včetně testovacích kontejnerů ActiveX z verzí sady Visual Studio starších než Visual Studio .NET 2003, nejsou podporovány hostiteli ovládacích prvků Windows Forms.
Tato omezení platí také pro použití ovládacích prvků Windows Forms prostřednictvím komponentového objektového modelu (COM). Použití ovládacího prvku Windows Forms pomocí obalu COM pro volání (CCW) je podporováno pouze v Internet Exploreru. Další informace o interoperabilitě modelu COM najdete v tématu
Následující tabulka ukazuje dostupnou podporu hostování ActiveX pro ovládací prvky Windows Forms.
| Verze Windows Forms | Podpora |
|---|---|
| .NET Framework verze 1.0 | Internet Explorer 5.01 a novější verze |
| .NET Framework verze 1.1 a novější | Internet Explorer 5.01 a novější verze Microsoft Foundation Classes (MFC) 7.0 a novější |
Hostování komponent Windows Forms jako ovládacích prvků ActiveX
V rozhraní .NET Framework 1.1 byla podpora rozšířena tak, aby zahrnovala mfc 7.0 a novější verze. Tato podpora zahrnuje všechny kontejnery, které jsou plně kompatibilní s kontejnerem ovládacího prvku ActiveX MFC 7.0 a novějším.
Registrace ovládacích prvků Windows Forms jako ovládacích prvků ActiveX se ale nepodporuje. Také volání metody com.ms.win32.Ole32.CoCreateInstance pro ovládací prvky Windows Forms není podporováno. Podporuje se pouze spravovaná aktivace ovládacích prvků Windows Forms. Jakmile vytvoříte ovládací prvek Windows Forms, můžete ho hostovat v aplikaci MFC stejně jako ovládací prvek ActiveX.
Pokud chcete ve své nespravované aplikaci používat ovládací prvky Windows Forms, musíte buď hostovat CLR pomocí nespravovaných rozhraní API pro hostování modulu CLR, nebo používat funkce interoperability C++. Doporučeným řešením je použití funkcí zprostředkovatele komunikace C++.
Windows Forms v COM klientských aplikacích
Když otevřete formulář Windows Form z klientské aplikace modelu COM, například aplikace Visual Basic 6.0 nebo aplikace MFC, může se formulář chovat neočekávaně. Když například stisknete klávesu TAB, fokus se nezmění z jednoho ovládacího prvku na jiný ovládací prvek. Když stisknete klávesu ENTER, když je fokus na příkazovém tlačítku, událost tlačítka Click se nevyvolá. Může také dojít k neočekávanému chování při stisknutí kláves nebo aktivitě myši.
K tomuto chování dochází, protože nespravovaná aplikace neimplementuje podporu smyčky zpráv, kterou Windows Forms vyžaduje, aby správně fungovala. Smyčka zpráv poskytovaná klientskou aplikací modelu COM se zásadně liší od smyčky zpráv modelu Windows Forms.
Smyčka zpráv aplikace je interní smyčka programu, která načítá zprávy z fronty zpráv vlákna, překládá je a pak je odesílá do aplikace, která se má zpracovat. Smyčka zpráv pro Windows Forms nemá stejnou architekturu jako smyčky zpráv, které poskytují dřívější aplikace, jako jsou aplikace Visual Basic 6.0 a aplikace MFC. Zprávy okna, které jsou publikovány do smyčky zprávy, mohou být zpracovávány jinak než Windows Form očekává. Proto může dojít k neočekávanému chování. Některé kombinace stisknutí kláves nemusí fungovat, některé aktivity myši nemusí fungovat nebo některé události nemusí být vyvolány podle očekávání.
Řešení problémů s interoperabilitou
Tyto problémy můžete vyřešit zobrazením formuláře ve smyčce zpráv rozhraní .NET Framework, který je vytvořen pomocí Application.Run metody.
Pokud chcete, aby Formulář Windows fungoval správně z COM klientské aplikace, musíte ho spustit ve smyčce zpráv Windows Forms. K tomu použijte jeden z následujících přístupů:
K zobrazení formuláře Windows Form použijte metodu Form.ShowDialog. Další informace naleznete v tématu Postupy: Podpora zprostředkování COM zobrazením formuláře Windows pomocí metody ShowDialog.
Zobrazte každý formulář Windows Form v novém vlákně. Další informace naleznete v tématu Postupy: Podpora COM Interop zobrazením každého formuláře systému Windows na samostatném vlákně.
Viz také
- Windows Forms a nespravované aplikace
- interoperabilita COM
- Interoperabilita modelu COM v aplikacích rozhraní .NET Framework
- Ukázky interoperability modelu COM
- Aximp.exe (import ovládacích prvků Windows Forms ActiveX)
- Vystavení komponent rozhraní .NET Framework do modelu COM
- Vytváření balíčku sestavení pro technologii COM
- registrace sestavení pomocí modelu COM
- Postupy: Podpora spolupráce COM zobrazením formuláře Windows pomocí metody ShowDialog
- Jak podpořit COM interop zobrazením jednotlivých formulářů Windows ve vlastním vlákně
.NET Desktop feedback