Provides an interface for designers to access resource readers and writers for specific CultureInfo resource types.
For a list of all members of this type, see IResourceService Members.
[Visual Basic] Public Interface IResourceService [C#] public interface IResourceService [C++] public __gc __interface IResourceService [JScript] public interface IResourceService
A resource writer or resource reader can be used to serialize or deserialze objects or data according to the specified CultureInfo resource settings.
[Visual Basic, C#] 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.
[Visual Basic] 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 [C#] using System; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing; using System.Globalization; using System.Resources; using System.Windows.Forms; using System.Windows.Forms.Design; namespace IResourceServiceExample { // Associates the ResourceTestControlDesigner with the // ResourceTestControl class. [Designer(typeof(ResourceTestControlDesigner))] public class ResourceTestControl : 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.BackColor = Color.White; this.Size = new Size(408, 160); } // Draws the strings contained in the string array. protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) { 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); for(int i=0; i<resource_strings.Length; i++) { e.Graphics.DrawString(resource_strings[i], new Font(FontFamily.GenericMonospace, 8), new SolidBrush(Color.SeaGreen), 2, 38+(i*18)); } } } // 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 : System.Windows.Forms.Design.ControlDesigner { public ResourceTestControlDesigner() {} public override System.ComponentModel.Design.DesignerVerbCollection Verbs { 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", new EventHandler(this.LoadResources)), new DesignerVerb("Create Default Resources File", new EventHandler(this.CreateResources)), new DesignerVerb("Clear ResourceTestControl String List", new EventHandler(this.ClearStrings)) }); } } // Sets the string list for the control to the strings // loaded from a resource file. private void LoadResources(object sender, EventArgs e) { IResourceService rs = (IResourceService)this.Component.Site.GetService(typeof(IResourceService)); if( rs == null ) throw new Exception("Could not obtain IResourceService."); IResourceReader rr = rs.GetResourceReader(CultureInfo.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.Control.GetType() == typeof(ResourceTestControl)) { ResourceTestControl rtc = (ResourceTestControl)this.Control; string s1, s2, s3; de.MoveNext(); s1 = (string)((DictionaryEntry)de.Current).Value; de.MoveNext(); s2 = (string)((DictionaryEntry)de.Current).Value; de.MoveNext(); s3 = (string)((DictionaryEntry)de.Current).Value; de.MoveNext(); rtc.resource_strings = new string[] {s1, s2, s3}; this.Control.Refresh(); } } // Creates a default resource file for the current // CultureInfo and adds 3 strings to it. private void CreateResources(object sender, EventArgs e) { IResourceService rs = (IResourceService)this.Component.Site.GetService(typeof(IResourceService)); if( rs == null ) throw new Exception("Could not obtain IResourceService."); IResourceWriter rw = 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(); } // Clears the string list of the associated ResourceTestControl. private void ClearStrings(object sender, EventArgs e) { if(this.Control.GetType() == typeof(ResourceTestControl)) { ResourceTestControl rtc = (ResourceTestControl)this.Control; rtc.resource_strings = new string[] { "Test String #1", "Test String #2" }; this.Control.Refresh(); } } } }
[C++, JScript] No example is available for C++ or JScript. To view a Visual Basic or C# example, click the Language Filter button
in the upper-left corner of the page.
Namespace: System.ComponentModel.Design
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
Assembly: System (in System.dll)
IResourceService Members | System.ComponentModel.Design Namespace | CultureInfo