次の方法で共有


IExtenderListService インターフェイス

拡張プロバイダのリストを生成できるインターフェイスを提供します。

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

Public Interface IExtenderListService
[C#]
public interface IExtenderListService
[C++]
public __gc __interface IExtenderListService
[JScript]
public interface IExtenderListService

解説

拡張プロバイダのリストを提供する必要がある場合、このサービスをサイトに実装できます。既定では、 IExtenderProvider を実装するコンテナ内の各コンポーネントが提供する拡張プロバイダについて、それらのコンポーネントを照会することにより、拡張プロバイダのリストが生成されます。コンポーネントのサイトでこのインターフェイスを実装することにより、コンテナはプロバイダのリストをオーバーライドできます。

使用例

[Visual Basic, C#, C++] IExtenderListService を使用して、現在アクティブな拡張プロバイダのセットを取得する例を次に示します。

 
Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.Data
Imports System.Windows.Forms

' This control lists any active extender providers.
Public Class ExtenderListServiceControl
   Inherits System.Windows.Forms.UserControl
   Private extenderListService As IExtenderListService
   Private extenderNames() As String
   
   Public Sub New()
      extenderNames = New String(-1) {}
      Me.Width = 600
    End Sub

    ' Queries the IExtenderListService when the control is sited 
    ' in design mode.
    Public Overrides Property Site() As System.ComponentModel.ISite
        Get
            Return MyBase.Site
        End Get
        Set(ByVal Value As System.ComponentModel.ISite)
            MyBase.Site = Value
            If Me.DesignMode Then
                extenderListService = CType(Me.GetService(GetType(IExtenderListService)), IExtenderListService)
                If Not (extenderListService Is Nothing) Then
                    Dim extenders As IExtenderProvider() = extenderListService.GetExtenderProviders()
                    extenderNames = New String(extenders.Length) {}
                    Dim i As Integer
                    For i = 0 To extenders.Length - 1
                        Dim types As Type() = Type.GetTypeArray(extenders)
                        extenderNames(i) = "ExtenderProvider #" + i.ToString() + ":  " + types(i).FullName
                    Next i
                End If
            Else
                extenderListService = Nothing
                extenderNames = New String(-1) {}
            End If
        End Set
    End Property

    ' Draws a list of any active extender providers
    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        If extenderNames.Length = 0 Then
            e.Graphics.DrawString("No active extender providers", New Font("Arial", 9), New SolidBrush(Color.Black), 10, 10)
        Else
            e.Graphics.DrawString("List of types of active extender providers", New Font("Arial", 9), New SolidBrush(Color.Black), 10, 10)
        End If
        Dim i As Integer
        For i = 0 To extenderNames.Length - 1
            e.Graphics.DrawString(extenderNames(i), New Font("Arial", 8), New SolidBrush(Color.Black), 10, 25 + i * 10)
        Next i
    End Sub

End Class

[C#] 
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Data;
using System.Windows.Forms;

namespace ExtenderListServiceExample
{
    // This control lists any active extender providers.
    public class ExtenderListServiceControl : System.Windows.Forms.UserControl
    {        
        private IExtenderListService extenderListService;
        private string[] extenderNames;

        public ExtenderListServiceControl()
        {            
            extenderNames = new string[0];
            this.Width = 600;
        }

        // Queries the IExtenderListService when the control is sited 
        // in design mode.
        public override System.ComponentModel.ISite Site
        {
            get
            {
                return base.Site;
            }
            set
            {
                base.Site = value;
                if( this.DesignMode )
                {
                    extenderListService = (IExtenderListService)this.GetService(typeof(IExtenderListService));
                    if( extenderListService != null )
                    {
                        IExtenderProvider[] extenders = extenderListService.GetExtenderProviders();
                        extenderNames = new string[extenders.Length];
                        for( int i=0; i<extenders.Length; i++ )
                            extenderNames[i] = "ExtenderProvider #"+i.ToString()+":  "+extenders[i].GetType().FullName;
                    }
                }
                else
                {
                    extenderListService = null;
                    extenderNames = new string[0];
                }
            }
        }

        // Draws a list of any active extender providers
        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            if( extenderNames.Length == 0 )
                e.Graphics.DrawString("No active extender providers", new Font("Arial", 9), new SolidBrush(Color.Black), 10, 10);
            else
                e.Graphics.DrawString("List of types of active extender providers", new Font("Arial", 9), new SolidBrush(Color.Black), 10, 10);
            for(int i=0; i<extenderNames.Length; i++)
                e.Graphics.DrawString(extenderNames[i], new Font("Arial", 8), new SolidBrush(Color.Black), 10, 25+(i*10));
        }        
    }
}

[C++] 
#using <mscorlib.dll>
#using <system.dll>
#using <system.drawing.dll>
#using <system.windows.forms.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::Windows::Forms;

namespace ExtenderListServiceExample
{
    // This control lists any active extender providers.
    public __gc class ExtenderListServiceControl : public UserControl {
    private:

        IExtenderListService* extenderListService;
        String* extenderNames[];

    public:

        ExtenderListServiceControl()
        {
            this->Width = 600;
        }

        // Queries the IExtenderListService when the control is sited
        // in design mode.
        __property ISite* get_Site()
        {
            return UserControl::get_Site();
        }

        __property void set_Site(ISite* value)
        {
            UserControl::set_Site( value );
            if( this->DesignMode )
            {
                extenderListService = dynamic_cast<IExtenderListService*>(this->GetService(__typeof(IExtenderListService)));
                if( extenderListService != 0 )
                {
                    IExtenderProvider* extenders[] = extenderListService->GetExtenderProviders();
                    extenderNames = new String*[extenders->Length];
                    for( int i=0; i<extenders->Length; i++ )
                        extenderNames[i] = String::Concat( S"ExtenderProvider #", i.ToString(), S":  ", extenders[i]->GetType()->FullName );
                }
            }
            else
            {
                extenderListService = 0;
            }
        }

    protected:

        // Draws a list of any active extender providers
        void OnPaint(PaintEventArgs* e)
        {
            if( extenderNames->Length == 0 )
                e->Graphics->DrawString(S"No active extender providers", new System::Drawing::Font(S"Arial", 9), new SolidBrush(Color::Black), 10, 10);
            else
                e->Graphics->DrawString(S"List of types of active extender providers", new System::Drawing::Font(S"Arial", 9), new SolidBrush(Color::Black), 10, 10);
            for(int i=0; i<extenderNames->Length; i++)
                e->Graphics->DrawString(extenderNames[i], new System::Drawing::Font(S"Arial", 8), new SolidBrush(Color::Black), 10, 25+(i*10));
        }
    };
}

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

必要条件

名前空間: System.ComponentModel.Design

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

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

参照

IExtenderListService メンバ | System.ComponentModel.Design 名前空間 | IExtenderProvider