Uwagi odnośnie do hostowania kontrolki ActiveX na formularzu systemu Windows

Mimo że formularze systemu Windows zostały zoptymalizowane pod kątem hostowania kontrolek Windows Forms, nadal można używać kontrolek ActiveX. Podczas planowania aplikacji korzystającej z kontrolek ActiveX należy wziąć pod uwagę następujące kwestie:

  • Zabezpieczenia Środowisko uruchomieniowe języka wspólnego zostało ulepszone w odniesieniu do zabezpieczeń dostępu do kodu. Aplikacje z zestawami Windows Forms mogą działać w w pełni zaufanym środowisku bez problemów i w częściowo zaufanym środowisku z większością funkcji dostępnych. Kontrolki Windows Forms mogą być hostowane w przeglądarce bez komplikacji. Jednak kontrolki ActiveX w formularzach Windows Forms nie mogą korzystać z tych ulepszeń zabezpieczeń. Uruchomienie kontrolki ActiveX wymaga niezarządzanego uprawnienia kodu, które jest ustawiane z właściwością SecurityPermissionAttribute.UnmanagedCode . Aby uzyskać więcej informacji na temat zabezpieczeń i niezarządzanych uprawnień kodu, zobacz SecurityPermissionAttribute.

  • Kontrolki ActiveX Total Cost of Ownership dodane do formularza systemu Windows są wdrażane z tym formularzem systemu Windows w całości, co może znacząco zwiększyć rozmiar utworzonych plików. Ponadto używanie kontrolek ActiveX w formularzach Systemu Windows wymaga zapisu w rejestrze. Jest to bardziej inwazyjne dla komputera użytkownika niż kontrolki Windows Forms, które nie wymagają tego.

    Uwaga

    Praca z kontrolką ActiveX wymaga użycia otoki międzyoperacyjnej MODELU COM. Aby uzyskać więcej informacji, zobacz Współdziałanie modelu COM w Visual Basic i Visual C#.

    Uwaga

    Jeśli nazwa elementu członkowskiego kontrolki ActiveX jest zgodna z nazwą zdefiniowaną w programie .NET Framework, importer kontrolek ActiveX będzie prefiks nazwy składowej ctl podczas tworzenia klasy pochodnej AxHost . Jeśli na przykład kontrolka ActiveX ma element członkowski o nazwie Layout, zostanie zmieniona nazwa CtlLayout w klasie pochodnej AxHost, ponieważ zdarzenie Układu jest zdefiniowane w programie .NET Framework.

Zobacz też