ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Windows Forms 的AxHost 类介绍

Windows Forms 的AxHost 类介绍

原创 Linux操作系统 作者:iDotNetSpace 时间:2008-01-22 17:35:07 0 删除 编辑

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

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

Visual Basic(声明)
True)> _
 _
Public MustInherit Class AxHost
    Inherits Control
    Implements ISupportInitialize, ICustomTypeDescriptor
Visual Basic(用法)
Dim instance As AxHost
C#
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] 
public abstract class AxHost : Control, ISupportInitialize, ICustomTypeDescriptor
C++
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)] 
public ref class AxHost abstract : public Control, ISupportInitialize, ICustomTypeDescriptor
J#
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */ 
public abstract class AxHost extends Control implements ISupportInitialize, ICustomTypeDescriptor
JScript
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# 文件。您这时可对代码进行更改并将其重新编译成库文件。

Note注意

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

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

Note注意

如果您使用 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 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-157070/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

最新文章