Вопросы размещения элемента управления ActiveX в форме Windows Forms

Несмотря на то что формы Windows Forms оптимизированы для размещения элементов управления Windows Forms, в формах также можно использовать элементы управления ActiveX. При планировании приложения, использующего элементы управления ActiveX, необходимо учитывать следующие факторы:

  • Безопасность. Среда CLR была усовершенствована с точки зрения безопасности доступа для кода. Приложения, использующие Windows Forms, могут выполняться в полностью доверенной среде без каких-либо проблем и в среде с частичным доверием с большинством функциональных возможностей. Элементы управления Windows Forms поддерживают размещение в браузере безо всяких сложностей. Тем не менее элементы управления ActiveX в Windows Forms не могут использовать преимущества этих улучшений безопасности. Для запуска элемента управления ActiveX требуется разрешение на запуск неуправляемого кода, которое задается свойством SecurityPermissionAttribute.UnmanagedCode. Дополнительные сведения о безопасности и разрешении на неуправляемый код см. в разделе SecurityPermissionAttribute.

  • Общая стоимость владения. Элементы управления ActiveX, добавляемые в форму Windows Forms, развертываются с помощью этой формы полностью, что значительно увеличивает размер создаваемых файлов. Кроме того, для использования элементов управления ActiveX в формах Windows Forms требуется запись в реестр. Таким образом, они более активно вмешиваются в работу компьютера пользователя, чем элементы управления Windows Forms, которые этого не требуют.

    Примечание.

    Работа с элементами управления ActiveX требует использования оболочки COM-взаимодействия. Дополнительные сведения см. в разделе COM-взаимодействие в Visual Basic и Visual C#.

    Примечание.

    Если имя члена элемента управления ActiveX совпадает с именем, заданным в .NET Framework, к имени члена при создании производного класса программа импорта элементов управления ActiveX добавит префикс CtlAxHost. Например, если элемент управления ActiveX содержит член с именем Layout, в производном классе AxHost он будет переименован в CtlLayout, так как в .NET Framework задано событие Layout.

См. также