IResourceService Interface
.NET Framework 2.0
Provides an interface for designers to access resource readers and writers for specific CultureInfo resource types.
Namespace: System.ComponentModel.Design
Assembly: System (in system.dll)
Assembly: System (in system.dll)
The following example demonstrates a designer that uses the IResourceService to read from and write to resource files in order to configure a property of an associated control.
Imports System Imports System.Collections Imports System.ComponentModel Imports System.ComponentModel.Design Imports System.Drawing Imports System.Globalization Imports System.Resources Imports System.Windows.Forms Imports System.Windows.Forms.Design Namespace IResourceServiceExample ' Associates the ResourceTestControlDesigner with the ' ResourceTestControl class. <Designer(GetType(ResourceTestControlDesigner))> _ Public Class ResourceTestControl Inherits System.Windows.Forms.UserControl ' Initializes a string array used to store strings that this control displays. Public resource_strings() As String = {"Initial Default String #1", "Initial Default String #2"} Public Sub New() Me.BackColor = Color.White Me.Size = New Size(408, 160) End Sub ' Draws the strings contained in the string array. Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) e.Graphics.DrawString("IResourceService Example Designer Control", New Font(FontFamily.GenericMonospace, 10), New SolidBrush(Color.Blue), 2, 2) e.Graphics.DrawString("String list: (use shortcut menu in design mode)", New Font(FontFamily.GenericMonospace, 8), New SolidBrush(Color.Black), 2, 20) Dim i As Integer For i = 0 To resource_strings.Length - 1 e.Graphics.DrawString(resource_strings(i), New Font(FontFamily.GenericMonospace, 8), New SolidBrush(Color.SeaGreen), 2, 38 + (i * 18)) Next i End Sub End Class _ ' This designer offers several menu commands for the ' shortcut menu for the associated control. ' These commands can be used to reset the control's string ' list, to generate a default resources file, or to load the string ' list for the control from the default resources file. Public Class ResourceTestControlDesigner Inherits System.Windows.Forms.Design.ControlDesigner Public Sub New() End Sub Public Overrides ReadOnly Property Verbs() As System.ComponentModel.Design.DesignerVerbCollection Get ' Creates a collection of designer verb menu commands ' that link to event handlers in this designer. Return New DesignerVerbCollection(New DesignerVerb() { _ New DesignerVerb("Load Strings From Default Resources File", AddressOf Me.LoadResources), _ New DesignerVerb("Create Default Resources File", AddressOf Me.CreateResources), _ New DesignerVerb("Clear ResourceTestControl String List", AddressOf Me.ClearStrings)}) End Get End Property ' Sets the string list for the control to the strings ' loaded from a resource file. Private Sub LoadResources(ByVal sender As Object, ByVal e As EventArgs) Dim rs As IResourceService = CType(Me.Component.Site.GetService(GetType(IResourceService)), IResourceService) If rs Is Nothing Then Throw New Exception("Could not obtain IResourceService.") End If Dim rr As IResourceReader = rs.GetResourceReader(CultureInfo.CurrentUICulture) If rr Is Nothing Then Throw New Exception("Resource file could not be obtained. You may need to create one first.") End If Dim de As IDictionaryEnumerator = rr.GetEnumerator() If Me.Control.GetType() Is GetType(ResourceTestControl) Then Dim rtc As ResourceTestControl = CType(Me.Control, ResourceTestControl) Dim s1, s2, s3 As String de.MoveNext() s1 = CStr(CType(de.Current, DictionaryEntry).Value) de.MoveNext() s2 = CStr(CType(de.Current, DictionaryEntry).Value) de.MoveNext() s3 = CStr(CType(de.Current, DictionaryEntry).Value) de.MoveNext() rtc.resource_strings = New String() {s1, s2, s3} Me.Control.Refresh() End If End Sub ' Creates a default resource file for the current ' CultureInfo and adds 3 strings to it. Private Sub CreateResources(ByVal sender As Object, ByVal e As EventArgs) Dim rs As IResourceService = CType(Me.Component.Site.GetService(GetType(IResourceService)), IResourceService) If rs Is Nothing Then Throw New Exception("Could not obtain IResourceService.") End If Dim rw As IResourceWriter = rs.GetResourceWriter(CultureInfo.CurrentUICulture) rw.AddResource("string1", "Persisted resource string #1") rw.AddResource("string2", "Persisted resource string #2") rw.AddResource("string3", "Persisted resource string #3") rw.Generate() rw.Close() End Sub ' Clears the string list of the associated ResourceTestControl. Private Sub ClearStrings(ByVal sender As Object, ByVal e As EventArgs) If Me.Control.GetType() Is GetType(ResourceTestControl) Then Dim rtc As ResourceTestControl = CType(Me.Control, ResourceTestControl) rtc.resource_strings = New String() {"Test String #1", "Test String #2"} Me.Control.Refresh() End If End Sub End Class End Namespace
package IResourceServiceExample;
import System.*;
import System.Collections.*;
import System.ComponentModel.*;
import System.ComponentModel.Design.*;
import System.Drawing.*;
import System.Globalization.*;
import System.Resources.*;
import System.Windows.Forms.*;
import System.Windows.Forms.Design.*;
// Associates the ResourceTestControlDesigner with the
// ResourceTestControl class.
/** @ attribute Designer(ResourceTestControlDesigner .class.ToType())
*/
public class ResourceTestControl extends System.Windows.Forms.UserControl
{
// Initializes a string array used to store strings that
// this control displays.
public String resource_strings[] = new String[]
{ "Initial Default String #1", "Initial Default String #2" };
public ResourceTestControl()
{
this.set_BackColor(Color.get_White());
this.set_Size(new Size(408, 160));
} //ResourceTestControl
// Draws the strings contained in the string array.
protected void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
e.get_Graphics().DrawString("IResourceService Example Designer Control",
new Font(FontFamily.get_GenericMonospace(), 10),
new SolidBrush(Color.get_Blue()), 2, 2);
e.get_Graphics().DrawString(
"String list: (use shortcut menu in design mode)",
new Font(FontFamily.get_GenericMonospace(), 8),
new SolidBrush(Color.get_Black()), 2, 20);
for (int i = 0; i < resource_strings.length; i++) {
e.get_Graphics().DrawString(
System.Convert.ToString(resource_strings.get_Item(i)),
new Font(FontFamily.get_GenericMonospace(), 8),
new SolidBrush(Color.get_SeaGreen()), 2, 38 + i * 18);
}
} //OnPaint
} //ResourceTestControl
// This designer offers several menu commands for the
// shortcut menu for the associated control.
// These commands can be used to reset the control's string
// list, to generate a default resources file, or to load the string
// list for the control from the default resources file.
public class ResourceTestControlDesigner
extends System.Windows.Forms.Design.ControlDesigner
{
public ResourceTestControlDesigner()
{
} //ResourceTestControlDesigner
/** @property
*/
public System.ComponentModel.Design.DesignerVerbCollection get_Verbs()
{
// Creates a collection of designer verb menu commands
// that link to event handlers in this designer.
return new DesignerVerbCollection(new DesignerVerb[]
{ new DesignerVerb("Load Strings from Default Resources File",
new EventHandler(this.LoadResources)),
new DesignerVerb("Create Default Resources File",
new EventHandler(this.CreateResources)),
new DesignerVerb("Clear ResourceTestControl String List",
new EventHandler(this.ClearStrings)) });
} //get_Verbs
// Sets the string list for the control to the strings
// loaded from a resource file.
private void LoadResources(Object sender, EventArgs e) throws Exception
{
IResourceService rs = (IResourceService)(
this.get_Component().get_Site().
GetService(IResourceService.class.ToType()));
if (rs == null) {
throw new Exception("Could not obtain IResourceService.");
}
IResourceReader rr
= rs.GetResourceReader(CultureInfo.get_CurrentUICulture());
if (rr == null) {
throw new Exception("Resource file could not be obtained."
+ " You may need to create one first.");
}
IDictionaryEnumerator de = rr.GetEnumerator();
if (this.get_Control().GetType().
Equals(ResourceTestControl.class.ToType())) {
ResourceTestControl rtc
= (ResourceTestControl)this.get_Control();
String s1, s2, s3;
de.MoveNext();
s1 = (String)
((DictionaryEntry)(de.get_Current())).get_Value();
de.MoveNext();
s2 = (String)
((DictionaryEntry)(de.get_Current())).get_Value();
de.MoveNext();
s3 = (String)
((DictionaryEntry)(de.get_Current())).get_Value();
de.MoveNext();
rtc.resource_strings = new String[] { s1, s2, s3 };
this.get_Control().Refresh();
}
} //LoadResources
// Creates a default resource file for the current
// CultureInfo and adds 3 strings to it.
private void CreateResources(Object sender, EventArgs e) throws Exception
{
IResourceService rs = (IResourceService)(
this.get_Component().get_Site().
GetService(IResourceService.class.ToType()));
if (rs == null) {
throw new Exception("Could not obtain IResourceService.");
}
IResourceWriter rw
= rs.GetResourceWriter(CultureInfo.get_CurrentUICulture());
rw.AddResource("string1", "Persisted resource string #1");
rw.AddResource("string2", "Persisted resource string #2");
rw.AddResource("string3", "Persisted resource string #3");
rw.Generate();
rw.Close();
} //CreateResources
// Clears the string list of the associated ResourceTestControl.
private void ClearStrings(Object sender, EventArgs e)
{
if (this.get_Control().GetType().
Equals(ResourceTestControl.class.ToType())) {
ResourceTestControl rtc
= (ResourceTestControl)(this.get_Control());
rtc.resource_strings = new String[] {
"Test String #1", "Test String #2" };
this.get_Control().Refresh();
}
} //ClearStrings
} //ResourceTestControlDesigner
Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.Community Additions
ADD
Show: