次の方法で共有


AxHost クラス

ActiveX コントロールをラップし、完全な機能を備えた Windows フォーム コントロールとしてそのコントロールを公開します。

この型のすべてのメンバの一覧については、AxHost メンバ を参照してください。

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

MustInherit Public Class AxHost
   Inherits Control
   Implements ISupportInitialize, ICustomTypeDescriptor
[C#]
public abstract class AxHost : Control, ISupportInitialize,
   ICustomTypeDescriptor
[C++]
public __gc __abstract class AxHost : public Control,
   ISupportInitialize, ICustomTypeDescriptor
[JScript]
public abstract class AxHost extends Control implements
   ISupportInitialize, ICustomTypeDescriptor

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

通常、 AxHost クラスは直接使用しません。 Windows フォーム ActiveX コントロール インポータ (Aximp.exe) を使用して、 AxHost を拡張するラッパーを生成できます。

ActiveX コントロール インポータは、 AxHost の派生クラスを生成して、ライブラリ ファイル (DLL) にコンパイルします。これは、アプリケーションに参照として追加できます。または、ActiveX コントロール インポータに /source スイッチを付けて実行すると、 AxHost の派生クラスの C# ファイルが生成されます。生成された C# ファイルは必要に応じて変更し、ライブラリ ファイルに再コンパイルできます。

メモ   ActiveX コントロールの中に、.NET Framework で定義されている名前と同じ名前のメンバがある場合、 AxHost の派生クラスの作成時に、ActiveX コントロール インポータによって、これらのメンバにプレフィックス "Ctl" が付けられます。たとえば、ActiveX コントロールに "Layout" という名前のメンバがあるとします。.NET Framework には Layout という名前のイベントが既にあるため、 AxHost の派生クラス内では "CtlLayout" に名前が変更されます。

AxHost クラスの共通プロパティの多くは、基になる ActiveX コントロールがそれらのプロパティを公開している場合だけに有効であり、使用できます。共通プロパティには、 BackColorCursorFontText などがあります。

メモ   Windows フォームのデザイン環境として Visual Studio .NET を使用する場合、ActiveX コントロールをアプリケーションで利用するには、ActiveX コントロールをツールボックスに追加します。ツールボックスを右クリックし、[ツールボックスのカスタマイズ] を選択してから、ActiveX コントロールの .ocx ファイルを探して選択します。詳細については、Visual Studio .NET ドキュメントの Windows フォームへの ActiveX コントロールの追加を参照してください。

使用例

[C#] Microsoft Masked Edit ActiveX コントロールをラップする AxHost の派生クラスのコンストラクタ、 SetAboutBoxDelegate メソッド、および AttachInterfaces メソッドをオーバーライドする例を次に示します。このコードは、MSMask32.ocx ファイル上で /source スイッチを使用して AxImp.exe を実行し、編集対象となるラッパー クラスを生成することで、生成されるソース コードを作成済みであることを前提としています。AxImp.exe の出力言語は C# だけなので、ここでは C# 構文のコードだけを示します。

 
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);
   }
}

[Visual Basic, C++, JScript] Visual Basic、C++、および JScript のサンプルはありません。C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Windows.Forms

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System.Windows.Forms (System.Windows.Forms.dll 内)

参照

AxHost メンバ | System.Windows.Forms 名前空間 | Control | UserControl