次の方法で共有


LocalizationExtenderProvider クラス

ローカリゼーション機能のデザイン時のサポートをルート デザイナに提供します。

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

System.Object
   System.ComponentModel.Design.LocalizationExtenderProvider

Public Class LocalizationExtenderProvider
   Implements IExtenderProvider, IDisposable
[C#]
public class LocalizationExtenderProvider : IExtenderProvider,
   IDisposable
[C++]
public __gc class LocalizationExtenderProvider : public
   IExtenderProvider, IDisposable
[JScript]
public class LocalizationExtenderProvider implements
   IExtenderProvider, IDisposable

スレッドセーフ

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

解説

LocalizationExtenderProvider は、.NET Framework のローカリセーション アーキテクチャのサポートを提供するプロパティやメソッドのセットを使用して、 IRootDesigner を拡張できます。リソースの使用の詳細については、「 ローカリゼーション 」のトピックを参照してください。

ローカリゼーション サポート アーキテクチャを使用すると、デザイナは、実行時に交換できるリソース ファイルを使用して、コンポーネントのプロパティを初期化できるようになります。これにより、さまざまな言語、カルチャ固有のスタイル、および動的に構成可能な機能がサポートされます。このクラスのメソッドを使用すると、デザイナおよびコード生成シリアライザで、リソースからの読み込みとローカリゼーション機能を使用した初期化コードの作成が可能になります。

Visual Studio .NET に同梱されている既定のシリアライザには、既にコンポーネントやコントロールをローカライズする機能がありますが、これが使用されるのは、.NET Framework のローカリゼーション アーキテクチャのサポートが見つかった場合だけです。ローカリゼーション サポートの存在を検出するには、シリアル化システムが、ルート デザイナ コンポーネント上で "Localizable" という名前のパブリックな Boolean プロパティを見つける必要があります。シリアライザは、このプロパティを見つけると、"Language" という名前の CultureInfo 型のプロパティを検索して、現在のリソース構成を確認します。既定のシリアライザは、これらのプロパティを使用して、コンポーネントのローカライズ可能なリソースをローカライズする必要があるかどうかを判断し、その必要がある場合は、リソース情報が保存される CultureInfo 形式を確認します。

使用例

[Visual Basic, C#, C++] LocalizationExtenderProvider をコンポーネントに追加するコード例を次に示します。

 
' Adds a LocalizationExtenderProvider that provides localization support properties to the specified component.
extender = New LocalizationExtenderProvider(Me.component_.Site, Me.component_)

[C#] 
// Adds a LocalizationExtenderProvider that provides localization support properties to the specified component.
extender = new LocalizationExtenderProvider(this.component.Site, this.component);

[C++] 
// Adds a LocalizationExtenderProvider that provides localization support properties to the specified component.
extender = new LocalizationExtenderProvider(this->component->Site, this->component);

次に示すのは、サンプルのコンポーネントとデザイナを使用したコード例です。このデザイナは、 LocalizationExtenderProvider を使用してコンポーネントのローカリゼーション サポート プロパティを追加します。

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

' This example demonstrates adding localization support to a component heirarchy from a 
' custom IRootDesigner using the LocalizationExtenderProvider class.

' RootViewDesignerComponent is a component associated with the SampleRootDesigner
' IRootDesigner that provides LocalizationExtenderProvider localization support.
' This derived class is included at the top of this example to enable 
' easy launching of designer view without having to put the class in its own file.
Public Class RootViewDesignerComponent
    Inherits RootDesignedComponent

    Public Sub New()
    End Sub
End Class

' The following attribute associates the RootDesignedComponent with the RootDesignedComponent component.
<Designer(GetType(SampleRootDesigner), GetType(IRootDesigner))> _
Public Class RootDesignedComponent
    Inherits Component

    Public Sub New()
    End Sub
End Class

' Example IRootDesigner implementation demonstrates LocalizationExtenderProvider support.
Friend Class SampleRootDesigner
    Implements IRootDesigner

    ' RootDesignerView Control provides a full region designer view for this root designer's associated component.
    Private m_view As RootDesignerView
    ' Stores reference to the LocalizationExtenderProvider this designer adds, in order to remove it on Dispose.
    Private extender As LocalizationExtenderProvider
    ' Internally stores the IDesigner's component reference
    Private component_ As IComponent

    ' Adds a LocalizationExtenderProvider for the component this designer is initialized to support.
    Public Sub Initialize(ByVal component As System.ComponentModel.IComponent) Implements IRootDesigner.Initialize
        Me.component_ = component

        ' If no extender from this designer is active...
        If extender Is Nothing Then
            ' Adds a LocalizationExtenderProvider that provides localization support properties to the specified component.
            extender = New LocalizationExtenderProvider(Me.component_.Site, Me.component_)
        End If
    End Sub

    ' Provides a RootDesignerView object that supports ViewTechnology.WindowsForms.
    Function GetView(ByVal technology As ViewTechnology) As Object Implements IRootDesigner.GetView

        If technology <> ViewTechnology.WindowsForms Then
            Throw New ArgumentException("Not a supported view technology", "technology")
        End If
        If m_view Is Nothing Then
            ' Create the view control. In this example, a Control of type RootDesignerView is used.
            ' A WindowsForms ViewTechnology view provider requires a class that inherits from Control.
            m_view = New RootDesignerView(Me, Me.Component)
        End If
        Return m_view

    End Function

    ' This designer supports the WindowsForms view technology.
    ReadOnly Property SupportedTechnologies() As ViewTechnology() Implements IRootDesigner.SupportedTechnologies
        Get
            Return New ViewTechnology() {ViewTechnology.WindowsForms}
        End Get
    End Property

    ' If a LocalizationExtenderProvider has been added, removes the extender provider.
    Protected Overloads Sub Dispose(ByVal disposing As Boolean)
        ' If an extender has been added, remove it
        If Not (extender Is Nothing) Then
            ' Disposes of the extender provider.  The extender 
            ' provider removes itself from the extender provider
            ' service when it is disposed.
            extender.Dispose()
            extender = Nothing
        End If
    End Sub

    ' Empty IDesigner interface property and method implementations
    Public ReadOnly Property Verbs() As System.ComponentModel.Design.DesignerVerbCollection Implements IDesigner.Verbs
        Get
            Return Nothing
        End Get
    End Property

    Public ReadOnly Property Component() As System.ComponentModel.IComponent Implements IRootDesigner.Component
        Get
            Return Me.component_
        End Get
    End Property

    Public Sub DoDefaultAction() Implements IDesigner.DoDefaultAction
    End Sub

    Public Overloads Sub Dispose() Implements IDisposable.Dispose
    End Sub

    ' RootDesignerView is a simple control that will be displayed in the designer window.
    Private Class RootDesignerView
        Inherits Control
        Private m_designer As SampleRootDesigner
        Private comp As IComponent

        Public Sub New(ByVal designer As SampleRootDesigner, ByVal component As IComponent)
            m_designer = designer
            Me.comp = component
            BackColor = Color.Blue
            Font = New Font(FontFamily.GenericMonospace, 12)
        End Sub

        ' Displays the name of the component and the name of the assembly of the component 
        ' that this root designer is providing support for.
        Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs)
            MyBase.OnPaint(pe)

            If Not (m_designer Is Nothing) AndAlso Not (comp Is Nothing) Then
                ' Draws the name of the component in large letters.
                pe.Graphics.DrawString("Root Designer View", Font, Brushes.Yellow, 8, 4)
                pe.Graphics.DrawString("Design Name  : " + comp.Site.Name, New Font("Arial", 10), Brushes.Yellow, 8, 28)
                
                ' Uses the site of the component to acquire an ISelectionService and sets the property grid focus to the component.
                Dim selectionService As ISelectionService = CType(comp.Site.GetService(GetType(ISelectionService)), ISelectionService)
                If Not (selectionService Is Nothing) Then
                    selectionService.SetSelectedComponents(New IComponent() {m_designer.Component})
                End If
            End If
        End Sub
    End Class

End Class

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

// This example demonstrates adding localization support to a component heirarchy from a 
// custom IRootDesigner using the LocalizationExtenderProvider class.
namespace LocalizationExtenderProviderExample
{    
    // RootViewDesignerComponent is a component associated with the SampleRootDesigner
    // IRootDesigner that provides LocalizationExtenderProvider localization support.
    // This derived class is included at the top of this example to enable 
    // easy launching of designer view without having to put the class in its own file.
    public class RootViewDesignerComponent : RootDesignedComponent
    {  
        public RootViewDesignerComponent()
        {            
        }
    }

    // The following attribute associates the RootDesignedComponent with the RootDesignedComponent component.
    [Designer(typeof(SampleRootDesigner), typeof(IRootDesigner))]
    public class RootDesignedComponent : Component
    {
        public RootDesignedComponent()
        {
        }    
    }

    // Example IRootDesigner implementation demonstrates LocalizationExtenderProvider support.
    internal class SampleRootDesigner : IRootDesigner
    {
        // RootDesignerView Control provides a full region designer view for this root designer's associated component.
        private RootDesignerView m_view;            
        // Stores reference to the LocalizationExtenderProvider this designer adds, in order to remove it on Dispose.
        private LocalizationExtenderProvider extender;        
        // Internally stores the IDesigner's component reference
        private IComponent component;                
        
        // Adds a LocalizationExtenderProvider for the component this designer is initialized to support.
        public void Initialize(System.ComponentModel.IComponent component)
        {
           this.component = component;
            
            // If no extender from this designer is active...
            if( extender == null )
            {
                // Adds a LocalizationExtenderProvider that provides localization support properties to the specified component.
                extender = new LocalizationExtenderProvider(this.component.Site, this.component);
            }
        }

        // Provides a RootDesignerView object that supports ViewTechnology.WindowsForms.
        object IRootDesigner.GetView(ViewTechnology technology) 
        {
            if (technology != ViewTechnology.WindowsForms)
            {
                throw new ArgumentException("Not a supported view technology", "technology");
            }
            if (m_view == null )
            {
                // Create the view control. In this example, a Control of type RootDesignerView is used.
                // A WindowsForms ViewTechnology view provider requires a class that inherits from Control.
                m_view = new RootDesignerView(this, this.Component);
            }
            return m_view;
        }

        // This designer supports the WindowsForms view technology.
        ViewTechnology[] IRootDesigner.SupportedTechnologies 
        {
            get
            {
                return new ViewTechnology[] {ViewTechnology.WindowsForms};
            }
        }
        
        // If a LocalizationExtenderProvider has been added, removes the extender provider.
        protected void Dispose(bool disposing)
        {            
            // If an extender has been added, remove it
            if( extender != null  )  
            {
                // Disposes of the extender provider.  The extender 
                // provider removes itself from the extender provider
                // service when it is disposed.
                extender.Dispose();
                extender = null;                
            }            
        }

        // Empty IDesigner interface property and method implementations
        public System.ComponentModel.Design.DesignerVerbCollection Verbs
        {
            get
            {
                return null;
            }
        }

        public System.ComponentModel.IComponent Component
        {
            get
            {
                return this.component;
            }
        }

        public void DoDefaultAction()
        {            
        }

        public void Dispose()
        {        
        }
        
        // RootDesignerView is a simple control that will be displayed in the designer window.
        private class RootDesignerView : Control
        {
            private SampleRootDesigner m_designer;   
            private IComponent comp;
            
            public RootDesignerView(SampleRootDesigner designer, IComponent component)
            {
                m_designer = designer;                        
                this.comp = component;      
                BackColor = Color.Blue;
                Font = new Font(FontFamily.GenericMonospace, 12);
            }

            // Displays the name of the component and the name of the assembly of the component 
            // that this root designer is providing support for.
            protected override void OnPaint(PaintEventArgs pe)
            {
                base.OnPaint(pe);

                if( m_designer != null && comp != null )
                {
                    // Draws the name of the component in large letters.
                    pe.Graphics.DrawString("Root Designer View", Font, Brushes.Yellow, 8, 4);                    
                    pe.Graphics.DrawString("Design Name  : "+comp.Site.Name, new Font("Arial", 10), Brushes.Yellow, 8, 28);                    
                    pe.Graphics.DrawString("Assembly    : "+comp.GetType().AssemblyQualifiedName, new Font("Arial", 10), Brushes.Yellow, new Rectangle(new Point(8, 44), new Size(ClientRectangle.Width-8, ClientRectangle.Height-44)));                   

                    // Uses the site of the component to acquire an ISelectionService and sets the property grid focus to the component.
                    ISelectionService selectionService = (ISelectionService)comp.Site.GetService(typeof(ISelectionService));
                    if( selectionService != null )                
                        selectionService.SetSelectedComponents( new IComponent[] { m_designer.component } );             
                }
            }
        }
    }
}

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

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

// This example demonstrates adding localization support to a component heirarchy from a
// custom IRootDesigner using the LocalizationExtenderProvider class.
namespace LocalizationExtenderProviderExample
{
    // Example IRootDesigner implementation demonstrates LocalizationExtenderProvider support.
    private __gc class SampleRootDesigner : public IRootDesigner {
    private:

        // RootDesignerView is a simple control that will be displayed in the designer window.
        __gc class RootDesignerView : public Control {
        private:

            SampleRootDesigner* m_designer;
            IComponent* comp;

        public:

            RootDesignerView(SampleRootDesigner* designer, IComponent* component)
            {
                m_designer = designer;
                this->comp = component;
                BackColor = Color::Blue;
                Font = new System::Drawing::Font(FontFamily::GenericMonospace, 12);
            }

        protected:

            // Displays the name of the component and the name of the assembly of the component
            // that this root designer is providing support for.
            void OnPaint(PaintEventArgs* pe)
            {
                Control::OnPaint(pe);

                if( m_designer != 0 && comp != 0 )
                {
                    // Draws the name of the component in large letters.
                    pe->Graphics->DrawString(S"Root Designer View", Font, Brushes::Yellow, 8, 4);
                    pe->Graphics->DrawString(String::Concat( S"Design Name  : ",comp->Site->Name ),
                        new System::Drawing::Font(S"Arial", 10), Brushes::Yellow, 8, 28);
                    pe->Graphics->DrawString(String::Concat( S"Assembly    : ", comp->GetType()->AssemblyQualifiedName ),
                        new System::Drawing::Font(S"Arial", 10), Brushes::Yellow, System::Drawing::RectangleF(System::Drawing::Point(8, 44),
                            System::Drawing::Size(ClientRectangle.Width-8, ClientRectangle.Height-44)));

                    // Uses the site of the component to acquire an ISelectionService and sets the property grid focus to the component.
                    ISelectionService* selectionService = dynamic_cast<ISelectionService*>(comp->Site->GetService(__typeof(ISelectionService)));
                    if( selectionService != 0 ) {
                        IComponent* myArray[] = { m_designer->component };
                        selectionService->SetSelectedComponents( static_cast<Array*>(myArray) );
                    }
                }
            }
        };

        // RootDesignerView Control provides a full region designer view for this root designer's associated component.
        RootDesignerView* m_view;
        // Stores reference to the LocalizationExtenderProvider this designer adds, in order to remove it on Dispose.
        LocalizationExtenderProvider* extender;
        // Internally stores the IDesigner's component reference
        IComponent* component;

        // Provides a RootDesignerView object that supports ViewTechnology.WindowsForms.
        Object* IRootDesigner::GetView(ViewTechnology technology)
        {
            if (technology != ViewTechnology::WindowsForms)
            {
                throw new ArgumentException(S"Not a supported view technology", "technology");
            }
            if (m_view == 0)
            {
                // Create the view control. In this example, a Control of type RootDesignerView is used.
                // A WindowsForms ViewTechnology view provider requires a class that inherits from Control.
                m_view = new RootDesignerView(this, this->Component);
            }
            return m_view;
        }

        // This designer supports the WindowsForms view technology.
        __property ViewTechnology IRootDesigner::get_SupportedTechnologies() []
        {
            ViewTechnology myArray[] = {ViewTechnology::WindowsForms};
            return myArray;
        }

    public:

        // Adds a LocalizationExtenderProvider for the component this designer is initialized to support.
        void Initialize(IComponent* component)
        {
           this->component = component;

            // If no extender from this designer is active...
            if( extender == 0 )
            {
                // Adds a LocalizationExtenderProvider that provides localization support properties to the specified component.
                extender = new LocalizationExtenderProvider(this->component->Site, this->component);
            }
        }

        // Empty IDesigner interface property and method implementations
        __property DesignerVerbCollection* get_Verbs()
        {
            return 0;
        }

        __property IComponent* get_Component()
        {
            return this->component;
        }

        void DoDefaultAction()
        {
        }

        void Dispose()
        {
        }

    protected:

        // If a LocalizationExtenderProvider has been added, removes the extender provider.
        void Dispose(bool disposing)
        {
            // If an extender has been added, remove it
            if( extender != 0 )
            {
                // Disposes of the extender provider.  The extender
                // provider removes itself from the extender provider
                // service when it is disposed.
                extender->Dispose();
                extender = 0;
            }
        }
    };

    // The following attribute associates the RootDesignedComponent with the RootDesignedComponent component.
    [Designer(__typeof(SampleRootDesigner), __typeof(IRootDesigner))]
    public __gc class RootDesignedComponent : public Component {
    public:

        RootDesignedComponent()
        {
        }
    };

    // RootViewDesignerComponent is a component associated with the SampleRootDesigner
    // IRootDesigner that provides LocalizationExtenderProvider localization support.
    // This derived class is included at the top of this example to enable
    // easy launching of designer view without having to put the class in its own file.
    public __gc class RootViewDesignerComponent : public RootDesignedComponent {
    public:

        RootViewDesignerComponent()
        {
        }
    };
}

[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.Design (System.Design.dll 内)

参照

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