Я смущен, кто-либо может выручить меня?
Править
Моя проблема состоит в том, что я создал элемент управления ActiveX в Delphi, и я просто не могу заставить его играть приятно на земле WPF. Я посмотрел на соответствующие страницы MSDN, и похоже, что это ДОЛЖНО работать, таким образом, я, возможно, пошел не так, как надо в способе, которым я создал элемент управления ActiveX во-первых.
Посмотрите элемент управления ActiveX Хостинга в WPF
Взгляните на официальную документацию для обоих классов
Вот сигнатура класса для System.Windows.Controls.control class
public class Control : FrameworkElement
Вот сигнатура класса для System. Windows.Forms.Control class
public class Control : Component, IOleControl,
IOleObject, IOleInPlaceObject, IOleInPlaceActiveObject, IOleWindow, IViewObject,
IViewObject2, IPersist, IPersistStreamInit, IPersistPropertyBag, IPersistStorage,
IQuickActivate, ISupportOleDropSource, IDropTarget, ISynchronizeInvoke, IWin32Window,
IArrangedElement, IBindableComponent, IComponent, IDisposable
Это элементы управления, которые живут в совершенно разных мирах .
System.Windows.Controls.Control
- это элемент управления WPF .
System.Windows.Forms.Control
- это элемент управления WinForms .
Выбор довольно прост.Если вы разрабатываете приложение WinForms - используйте элементы управления WinForms. Точно так же, если вы пишете приложение WPF - используйте элементы управления WPF.
Что касается выбора между WPF и WinForms - этот вопрос может помочь.
System.Windows.Controls.Control
для приложения WPF
System.Windows.Forms.Control
i для приложения Winforms.
Я думаю, что есть ряд отличий, но первое, что приходит на ум, это то, что System.Windows.Controls.Control
использует шаблон для определения визуальных аспектов элемент управления, без шаблона он вообще не имеет визуального аспекта.Другими словами, без определения этого шаблона вы не можете сфокусировать его, чтобы он стал видимым или отображался в вашем приложении, потому что для него буквально нет визуального определения.
С другой стороны, у вас есть System.Windows.Forms.Control
, который позволяет вам создавать элемент управления, наследуемый от UserControl, класса элемента управления или другого элемента управления Windows. Если вы не укажете новый визуальный параметр для своего элемента управления, он будет отображаться в соответствии с тем, какой родительский элемент управления, от которого вы унаследовали, был настроен для отображения.
Итак, с System.Windows.Controls.Control
вы получаете гораздо больше гибкости за счет затрат на дополнительную работу, а с System.Windows.Forms.Control
вы получаете унаследовать от существующих элементов управления, сэкономив время, так как цена меньшей гибкости.
Что такое Windows Presentation Foundation и Windows Forms?
По пространству имен вы должны определить, что один из них является базовым классом управления для WPF (все WPF используют именование .Windows), а другой - для Windows Forms.
Не могли бы вы пояснить, что именно вас смущает? Я обновлю свой ответ.
HTH,
Полезные ссылки
- Элементы управления Windows Forms и эквивалентные элементы управления WPF
- System.Windows.Forms
- System.Windows.Controls
System.Windows.Forms.Control
Определяет базовый класс для элементов управления, которые являются компонентами с визуальным представлением.
System.Windows.Controls.Control
Представляет базовый класс для элементов пользовательского интерфейса (UI), которые используют шаблон ControlTemplate для определения их внешнего вида.