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 名前空間