AxHost 类

包装 ActiveX 控件,并将其作为功能完全的 Windows 窗体控件进行公开。

**命名空间:**System.Windows.Forms
**程序集:**System.Windows.Forms(在 system.windows.forms.dll 中)

语法

声明
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _
Public MustInherit Class AxHost
    Inherits Control
    Implements ISupportInitialize, ICustomTypeDescriptor
用法
Dim instance As AxHost
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] 
public abstract class AxHost : Control, ISupportInitialize, ICustomTypeDescriptor
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)] 
public ref class AxHost abstract : public Control, ISupportInitialize, ICustomTypeDescriptor
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */ 
public abstract class AxHost extends Control implements ISupportInitialize, ICustomTypeDescriptor
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) 
public abstract class AxHost extends Control implements ISupportInitialize, ICustomTypeDescriptor

备注

通常不直接使用 AxHost 类。可以使用 Windows 窗体 ActiveX 控件导入程序 (Aximp.exe) 来生成扩展 AxHost 的包装。

ActiveX 控件导入程序会生成一个从 AxHost 类派生的类,并将其编译成库文件 (DLL);可以将该文件作为引用添加到应用程序中。或者,可将 /source 开关与 ActiveX 控件导入程序联合使用,这时会为 AxHost 派生类生成一个 C# 文件。您这时可对代码进行更改并将其重新编译成库文件。

提示

如果 ActiveX 控件的某个成员名与 .NET Framework 中定义的某一名称匹配,则 ActiveX 控件导入程序在创建 AxHost 派生类时会在该成员名前加上“Ctl”前缀。例如,如果 ActiveX 控件有一个名为“Layout”的成员,则在 AxHost 派生类中它将被重命名为“CtlLayout”,因为在 .NET Framework 中已定义了 Layout 事件。

AxHost 类中的大多数通用属性只有在基础 ActiveX 控件公开这些属性时才有效并且可以使用。以下是通用属性的几个示例:BackColorCursorFontText

提示

如果您使用 Visual Studio .NET 作为 Windows 窗体设计环境,则可以通过将 ActiveX 控件添至“工具箱”来使应用程序能够使用 ActiveX 控件。要实现这一点,请右击“工具箱”,选择“自定义工具箱”,然后浏览到 ActiveX 控件的 .ocx 文件。有关更多信息,请参见 Visual Studio .NET 文档中的“将 ActiveX 控件添至 Windows 窗体”。

示例

下面的代码示例重写此构造函数,并重写包装 Microsoft Masked Edit ActiveX 控件的 AxHost 派生类的 SetAboutBoxDelegateAttachInterfaces 方法。此代码要求您已经通过使用 /source 开关对 MSMask32.ocx 文件运行 AxImp.exe 而生成了要编辑的包装类,从而创建了生成的源代码。此代码仅用 C# 语法显示,因为那是 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)
    {
        this.ocx.AboutBox();
    }
}

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

继承层次结构

System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
       System.Windows.Forms.Control
        System.Windows.Forms.AxHost

线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

请参见

参考

AxHost 成员
System.Windows.Forms 命名空间
Control
UserControl