Вопросы размещения элемента управления 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, которые этого не требуют.
Note
Работа с элементами управления ActiveX требует использования оболочки COM-взаимодействия. Дополнительные сведения см. в разделе COM-взаимодействие в Visual Basic и Visual C#.
Note
Если имя члена элемента управления ActiveX совпадает с именем, определенные в .NET Framework, а затем программа импорта элементов управления ActiveX добавит префикс к имени члена Ctl при создании AxHost производного класса. Например, если элемент управления ActiveX содержит член с именем Layout, в производном от AxHost классе он будет переименован в CtlLayout, так как в .NET Framework задано событие Layout.