This documentation is archived and is not being maintained.

AxHost Class

Wraps ActiveX controls and exposes them as fully featured Windows Forms controls.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
public abstract class AxHost : Control, 
	ISupportInitialize, ICustomTypeDescriptor

You typically do not use the AxHost class directly. You can use the Windows Forms ActiveX Control Importer (Aximp.exe) to generate the wrappers that extend AxHost.

The ActiveX Control Importer generates a class that is derived from the AxHost class, and compiles it into a library file (DLL) that can be added as a reference to your application. Alternatively, you can use the /source switch with the ActiveX Control Importer and a C# file is generated for your AxHost derived class. You can then make changes to the code and recompile it into a library file.


If the name of a member of the ActiveX control matches a name defined in the .NET Framework, then the ActiveX Control Importer will prefix the member name with "Ctl" when it creates the AxHost derived class. For example, if your ActiveX control has a member named "Layout", it is renamed "CtlLayout" in the AxHost derived class because the Layout event is defined within the .NET Framework.

Most of the common properties of the AxHost class are only valid and used if the underlying ActiveX control exposes those properties. A few examples of the common properties are BackColor, Cursor, Font, and Text.


If you are using Visual Studio .NET as your Windows Forms design environment, you can make an ActiveX control available to your application by adding the ActiveX control to your Toolbox. To accomplish this, right-click the Toolbox, select Customize Toolbox, then browse to the ActiveX control's.ocx file. For more information, see "Adding ActiveX Controls to Windows Forms" in the Visual Studio .NET documentation.

The following code example overrides the constructor, and the SetAboutBoxDelegate and AttachInterfaces methods of an AxHost derived class that wraps the Microsoft Masked Edit ActiveX Control. This code requires that you have created the generated source code by running the AxImp.exe on the MSMask32.ocx file with the /source switch to generate the wrapper class to be edited. This code is only shown in C# syntax because that is the only language output by the AxImp.exe.

public AxMaskEdBox()
  base("c932ba85-4374-101b-a56c-00aa003668dc") // The ActiveX control's class identifier.
    // Make the AboutBox method the about box delegate. 
    this.SetAboutBoxDelegate(new AboutBoxDelegate(AboutBox));

public virtual void AboutBox()
    // If the instance of the ActiveX control is null when the AboutBox method  
    // is called, raise an InvalidActiveXStateException exception. 
    if ((this.ocx == null))
        throw new System.Windows.Forms.AxHost.InvalidActiveXStateException(
          "AboutBox", System.Windows.Forms.AxHost.ActiveXInvokeKind.MethodInvoke);
    // Show the about box if the ActiveX control has one. 
    if (this.HasAboutBox)

protected override void AttachInterfaces()
        // Attach the IMSMask interface to the ActiveX control. 
        this.ocx = ((MSMask.IMSMask)(this.GetOcx()));
    catch (System.Exception ex)

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0